Do not wrap the model
dint does not call the model APIs itself. It spawns the official CLI, streams events, and resumes with the engine’s own session id.
One local chat API over Claude, Codex, Grok, and Copilot. Official engines run the turn. Codicent Logbook is the append-only store. A job is just a tagged message.
# one process owns in-flight jobs dint serve # enqueue work as a Logbook message dint job grok "Summarize this repo" # job <logbook-id> # chat <chat_id> dint list <chat_id>
Claude Code, Codex, Grok, and Copilot each keep their own sessions, transcripts, and resume ids. That is fine for a terminal. It is a poor inbox: nothing to search later, nothing to enqueue from another tool, no common #user / #bot thread.
dint does not call the model APIs itself. It spawns the official CLI, streams events, and resumes with the engine’s own session id.
Every chat is an append-only Codicent thread: header, then #user and #bot turns chained with parentId. The ledger is Logbook, not a dint database.
Post @project #job #grok … and dint serve runs it. Ack is #job-run, so the webhook does not loop. Same path as an interactive send.
start_chat, send, cancel. Engines do the work. ChatLog writes the thread. Serve turns Logbook webhooks into background turns.
Pick an engine and a working directory. dint posts a header in Logbook and keeps the native session id when the CLI returns one.
The CLI streams JSONL. dint maps that to text, tools, and errors, then writes the user prompt and the joined bot reply onto the same parentId chain.
Keep dint serve running. A #job message is enough — from the CLI, from Logbook, or from anything that can PostMessage.
Engines on PATH today
Interactive send and webhook jobs work against a local logbook-server. Follow-ups use the engine session. What is still rough: no HTTP chat API, jobs are one-shot, serve must stay up, and dint chats previews the last message rather than a title.
| You can | Not yet |
|---|---|
Chat from the CLI or Python Router |
Hosted multi-user service |
Enqueue #job for Claude / Codex / Grok / Copilot |
Follow-up jobs on an existing chat from Logbook |
Read the full thread with dint list |
Small UI (planned after an HTTP API) |
# once: logbook-server + pipx curl -fsSL https://logbook.codicent.ai/install.sh | bash # Windows: iwr https://logbook.codicent.ai/install.ps1 | iex pipx install dint-cli # in any folder dint # chat — /help /engine /job /chats dint job grok "Summarize this repo"
dint starts logbook-server and a background dint serve if they are not running. One logbook covers every folder (chats store cwd). If port 5100 is another logbook, dint picks the next free port. Needs logbook-server and one engine CLI on PATH. Full commands are in the README.