Login
The console
Login

A chat page where the maintainer talks with this project's session about everything they're working on. The maintainer approved this direction on 2026-11-04 (HISTORY.md, "The design to start from"): what they see is board 3's; how it runs on Fossil is swk-ai's.

What it is

Rules it keeps

Reading the record

The maintainer, 2026-11-04, grading swk-ai's code against the virtues:

ocx builds on fossil which builds on sqlite which builds on basic file storage. each level provides greater abstraction/meaning. stability should be measured by our ability to mechanically analyze the previous meanings of data to associate them with meanings we have today. interchanging the tools we use to analyze the data and knowing that we have the opportunity to interchange those tools is what should give us confidence. Aligning to strict versions/builds or putting in unpredictable agents to derive meaning should be avoided.

The ideal code in the case of analyzing Fossil SQLite data stores, in my mind, can use build-time switches to either use the Crystal SQLite library or run a specified Fossil command-line.

So:

What ~/.fossil costs, checked 2026-11-04 with Fossil 2.27. Fossil's command line opens its global configuration file even for fossil sql --readonly: it creates ~/.fossil when missing, refuses to run when the home directory isn't writable ("must be writeable"), and refuses when the file exists but is read-only. A read leaves the file's bytes unchanged. So a page that must never write a file can run Fossil only with that file given somewhere writable, such as FOSSIL_HOME on a tmpfs, as swk-ai's one exemption does for attachments.

Conversations

The maintainer, 2026-11-04: "can I get a hamburger ... to bring up a chat list (able to be left open or closed) with a list of chats and a way to start a new chat?" Asked whether a new conversation should start a new session, they asked for advice, and said yes to it (HISTORY.md, "what the console is for").

Images

The maintainer, 2026-11-04: "I notice I cannot paste an image here", then "I don't love them going to wiki pages, like they do for swk-ai", and yes to unversioned files. A forum post can't hold a file in Fossil, so an image pasted or dropped into the message box is stored as an unversioned file of this repository, images/HASH.EXT (its SHA3-256), and the post links it, /ocx-console/uv/images/HASH.EXT. The same image twice is one file. Pasting needs Fossil's write-unversioned capability (y). Clones get the images with fossil uv sync.

One back end, two hosts

The maintainer, 2026-11-05: "i want to enable richer UIs with the fossil back end for several interfaces, including the media player, the robots compiler, and a bunch of things i forget or haven't thought of yet", and "i don't want to maintain a bunch of swift code when i really want 1 crystal version and to also run on web pages." They want this console on the phone too, deferring Stone's own.

The idea: a back end like this one is built twice from the same Crystal. Natively, Fossil runs it on a server as its /ext CGI. For WebAssembly (wasm32-wasi), a phone app such as Stone runs it for its own built-in Fossil server, the same way: request in the environment and standard input, page out on standard output. Each app is then Crystal and a page, with no Swift of its own.

Shown so far (2026-11-05; images and projects 2026-11-06):

The module asks its host for what WASI can't do, through imports of the module console_host (src/console/host.cr): projects lists the repositories the host serves (WASI has no directories), query reads one, fossil runs a Fossil command (writes, Markdown), with a file the host writes from the request's bytes when the command takes one (an image), ocx2 runs OCX's ocx2 (posts, new conversations). It never opens the repository itself: WASI has no file locks, so a read could see half of a sync's commit (x86-1-stone, forum ec4d48141e). tools/wasm/host.cr is such a host on Linux, embedding WAMR (the WebAssembly Micro Runtime, which also runs on iOS), built from source as an interpreter. Stone runs a module before its Fossil, not inside it: the Fossil lock isn't recursive.

Not yet:

How it will be shown to work

First with a throwaway repository and a stand-in for OCX, as swk-ai's tests do. Then live: the maintainer types a question on the page, and the session's answer appears there.

Not yet

Buttons that act, following the session's steps live, and anything else board 3 shows beyond the conversation. Each comes after the conversation works, and only if the maintainer wants it.

Open, one at a time

  1. ~~Start from swk-ai's code?~~ Settled: its storage decoding is ported; the reader, the rendering and the page follow "Reading the record" instead.
  2. ~~Which projects the session reads~~: every project on ollama.openbeagle.org (the maintainer, 2026-11-04, 11:54 PM). How it gets read access to each is still open.
  3. ~~The page's address~~: /ext/console under this repository, the maintainer's own word.

Other projects

The maintainer, 2026-11-05: "the writes should be going to the other forums and I should be able to chat with the other sessions already live on those forum threads".

The console lists the repositories beside its own on the Fossil server. Choosing a project shows its forum threads and sends replies there as the signed-in user, with that repository's permissions. Pasted images stay in the console's repository and work in any project's posts.

Not yet: new conversations and names are only for this project. Projects on other servers are not yet available.

Which sessions are active

The maintainer, 2026-11-05: "I have no visual indicator in this console that any of the sessions are active or how loaded the machines are where they run." The menu says, under each conversation, whether its session is running or waiting to start, from OCX's status on that project's repository, as the person signed in: its open runs, from the record. If OCX can't say, the menu shows nothing about it.

Not yet: how loaded the machines are. OCX's record doesn't hold that; only a node's own host sees its processes.