OnTrak Genie drives a coding agent over one sandboxed workspace and shows the work as it happens: the tool calls as they are decided, the file being written while it is still being written, and a diff of the change against what is on disk before the write lands. Nothing outside that directory is reachable, and a command or a large overwrite waits for a click.
# from the family repository root cp .env.example .env && make genie-up
# or the console on its own cd ontrak-genie && npm install && npm run build && npm start
A tool that edits your files is only trustworthy if you can watch it work.
| The problem | Genie's answer |
|---|---|
| The usual interface shows a spinner, then a finished diff you have to audit afterwards. | Tool calls stream into the transcript as they are decided, and the file being written renders live, character by character, beside a live diff of what is changing. You see the edit before the edit exists. |
| “Is this write safe?” is not a judgement to leave to the model, and not one a prompt can enforce. | An approval gate: run_command and any write over a line threshold stop and wait for a click. Denying ends the turn cleanly — the gate is the only thing between a plan and a changed machine. |
| A model that cannot call a tool fails the whole turn, usually after a long wait and without saying why. | A chain-health probe reports models n/m ready before you type, a fallback chain absorbs a throttled provider mid-task, and a dead chain is visible rather than discovered. |
| Which model ids actually work is not something a catalog tells you, and a large advertised list is not a usable one. | Sweep the catalog from the browser: probe the ids that claim tool support and keep the ones that answer. |
One console, one workspace, one place where every call is on the record.
Request → tool call → result, streamed to the browser over Server-Sent Events, with the partial tool call rendered while it is still arriving.
Every read and write resolves inside one directory. Absolute paths and ../ escapes are refused, and .git, node_modules and build output are skipped.
read, edit, write, list, search, run — each confined to that workspace, with no privileges outside it.
The file being written, syntax-highlighted, with a live diff against the on-disk baseline; a changed-marker file tree; a diff view for any file with history.
A fallback chain, a chain-health badge and a catalog sweep — plus an optional second gateway (a local model, no key) tried only after the chain is exhausted.