Skip to content
titah

Reference

FAQ

Short answers to the questions that come up first.

Is Titah a wrapper around Claude Code or opencode?

No. Titah has its own LLM loop, tool set, permission engine and session storage. Delegation is one extra capability. Remove every external agent CLI from the machine and Titah still works in full — you lose @claude, @opencode and /consensus, and nothing else.

Does Titah redistribute or bypass those agents?

No. It spawns the CLI you installed, with your own credentials, as an ordinary subprocess — exactly as if you had typed it in your terminal. Nothing is bundled, patched, or worked around. If an agent is not installed, Titah reports it as unavailable.

Do I need an account to use the CLI?

No. curl -fsSL https://titah.dev/install | bash and you are running. The account on this site is for the web dashboard only.

Does my code get uploaded anywhere?

Not by Titah itself. Sessions live in SQLite on your machine, snapshots in a shadow git repo, credentials in a 0600 auth.json.

Signed in, Titah reports metadata about each folder — name, language, git, and the figures titah stats already prints. Never file contents, transcripts, or tool output. Signed out, nothing leaves the machine at all, and there is no way to switch it on without an account.

Four ways to turn it off, including one ./titah.json in the single project you would rather keep quiet.

Session transcripts are separate and off by default, and switching them on takes two switches — tracking.sync locally and the project toggle in the dashboard. Even then, tool output and tool arguments never leave the machine. See Project tracking.

Two things do send content off the machine, both on their own network permission axis and both refusable: webfetch and websearch. And an external agent you delegate to sends whatever it sends, under its own policy — which is why delegating agents are always treated as writers and cannot be restrained from Titah’s side.

Which providers work?

Any OpenAI-compatible endpoint is first-class: self-hosted, routers, Ollama, LM Studio. Anthropic is available through @ai-sdk/anthropic. Both are just a provider block — see Configuration.

Does it work offline?

Yes, against a local provider such as Ollama or LM Studio. Declare contextWindow for local models or automatic compaction stays off — and ollama truncates at num_ctx without warning.

Windows?

Not in v1. The code stays platform-neutral, so it is roughly a day of work rather than a rewrite, but it is untested and unsupported today. Linux and macOS only.

Why is the default mode “confirm every change”?

Because the alternative is discovering what an agent did after it did it. Build Manual is the default; Tab switches to Build Auto when you have decided you trust the task. Build Auto still snapshots, so undo still reverts the whole turn.

What does undo actually undo?

One turn. Titah snapshots into a shadow git repo before the first change of each turn, so one undo reverts everything that turn did — including deleting files it created.

There is one sharp edge, after a /tim turn whose coordinator wrote nothing itself. Read Permissions & undo before relying on it.

Is my own .git touched?

Never. The snapshot lives in a separate git dir whose work tree points at your project — no stray commits, no disturbed staging area, no surprise stashes.

What does /consensus cost?

It calls every available external agent, so the $ shown is the sum of what each reported. For Claude Code on a subscription that number is an API-price equivalent, not a bill — what you actually spend is rate-limit quota. The cost you will feel more is time: consensus waits for the slowest agent.

Why are external costs not added to Titah’s own?

Because summing them would make the number a lie. They are different currencies — one is your provider’s tokens, the other is a figure passed through from another tool, which may itself be an equivalent rather than a charge.

Can the model decide to call Claude Code on its own?

No, not from a mention. Delegation is always triggered by you. One turn could otherwise call an external agent repeatedly and blow up cost without anyone noticing.

The one path where the model does dispatch work is task / /tim, and that is bounded: only agents you marked "subagent" or "all" are dispatchable, depth is capped at exactly one level, and writers are serialised.

What is the difference between a skill and a tool?

A skill is text — instructions inserted into a prompt. It cannot open a browser, call an API, or do anything the model could not already do. Any new capability requires a tool. See Skills.

What is the difference between memory and plan?

How long the fact stays true. plan is intent for the work in progress and dies with the session; memory is a fact about the project still true tomorrow, in a different session. Both survive compaction.

Can I run it as a server for my team?

titah serve exposes the whole core over HTTP + SSE, and titah attach http://host:4096 connects a TUI to it. But there is no authentication in v1 — a server on a public interface hands anyone a shell in that working directory. Bind it to localhost or put it behind something that authenticates.

Is it stable?

Version 0.7.0. Milestones M0–M6 are complete, and releases after 0.2.0 added tracking, session sync, side-panel extensions, prompt-cursor and tool-block work in the TUI, sub-agent transcript pages, stacked and foldable side panels, and an extension version check tied to the API rather than to Titah’s own version. Anything below 1.0 may still move under you.

Can I use it from a script or CI?

Yes. titah run --output-format json returns one object carrying ok, the answer, which tools ran, usage, and any notices; --json-schema makes the answer conform to a shape; exit codes separate “the turn failed” from “the answer was the wrong shape”. --bg detaches a long run.

Remember that with no client connected, anything needing a dialog is auto-denied — use --auto or an allowlist. See Structured output.

How do I know what it has cost me?

titah stats --all

Titah has recorded tokens per turn since its first version. Cost appears for models where you declared a price; Titah ships no price table, because a stale one produces numbers that look official and are wrong. See Cost & limits.

Can I stop it running away?

limits.turnTokens bounds one turn and defaults to 5× the model’s declared contextWindow; limits.sessionTokens bounds a whole session. Every stop says which limit was hit and which knob raises it. See Cost & limits.

Can I confine what bash is able to touch?

sandbox.bash runs commands under Seatbelt (macOS) or bubblewrap (Linux): reads stay free, writes are confined to the project and temp. It is off by default and fails closed — enabled where no sandbox exists, bash is refused rather than run unfenced. See Sandbox.

Is there a GUI?

titah web opens a browser client that uses exactly the API the TUI uses — no new routes, no build step. It is not the TUI in a browser: there is no sub-agent panel, no undo, no model or skill picker. See Web client.

What licence?

Apache-2.0. Source at github.com/titah-dev.