Desktop app
Install plan screen
Where an install would write, scope by scope, and the MCP snippet that goes
with it — so an operator approving a privileged install can see which files
it would touch first. The plan is read-only: the screen states target paths
and performs none of the changes. The command behind it is the sealed CLI's
install plan (cli), run as
tama request install/plan with an empty body.
#Header and signals
Title Install plan; scope planned changes once a plan is loaded;
freshness reads reading now, read <time>, or not read yet; the one
action is Re-read plan. The signal strip states Archive root (the
release the plan derives from), Scopes, and Active by archive alone —
Some / None, where None is the healthy state: nothing in this product
activates just because the archive exists.
#Levels
One section per scope level, ordered agent/app → editor → MCP →
user-global Git → repo/project Git → OS-level. Each shows the level name,
its first note as the detail, and a trailing active or needs a runtime.
Fields are the plan's own keys with camel case humanized into labels
(codexSettings reads as CODEX SETTINGS); a target the plan reports as
null renders Not configured — omitting the row would hide the fact.
A sealed release's plan reports, among others:
user-global Git hooks: ~/.config/git/hooks and OS-level policy: outside Tama.
The repo/project Git section's detail is its note: the user-global dispatcher runs each
repository's own .githooks/<hook> after its gates, and a repository must not
set a core.hooksPath of its own, because Git then runs that directory instead and
neither the Rust format check, the quality check nor review-push runs on its pushes.
tama hooks status --repo <path> names such an override.
The user-global Git section adds one row per managed hook, labelled Git hook pre-commit and
Git hook pre-push, whose value is the sentence tama install plan prints for it:
managed, held aside (where the dispatcher sits, and whether a recorded bypass lets a
re-enable restore it), foreign with the first statement of the hook in its place,
unreadable: <cause> when a hook is in place that cannot be read, or
absent. A held, foreign or unreadable pre-push means the push-time formatting gate is not known to run.
#MCP server
Paste this into a client configuration to expose the bundled Tama tools.
The snippet is the answer of tama request mcp/config — the same JSON
tama mcp config prints, naming the bundled tama with args ["mcp"] — read
lazily alongside the plan. Loading reads Reading the MCP snippet; a
failure shows MCP snippet could not be read with the sentence.
#Attestations
Below the model service rows, Carried attestations reads tama request attestation/required
and shows every claim a commit message carries for review-push, with Copy block putting them on the
clipboard one per line, the Git trailers its harsh review is written in (At least one Harsh-Review-Attacked,
No Harsh-Review-Finding, each with why), and each turn-end stop hook's claims. Its form checks a commit in a chosen repository
(Check commit) or an answer typed for a chosen hook (Check answer) through
attestation/check; the verdict reads <kind> <id> carries every claim, or
<kind> <id> does not carry its attestation; the gate refuses it with one
missing: "<claim or trailer>" line per missing item and one finding: "Harsh-Review-Finding: <defect>"
line per finding, and a refused request shows Tama refused with Tama's
sentence. Unpushed commits reads, for a chosen checkout (Choose checkout…, Read unpushed commits),
every commit its branch carries over its upstream through attestation/pending: whether every commit stands,
then each commit with Stands in its <place> or Does not stand and its missing:,
finding: and patches: <sha> <subject> lines, as tama attestation pending prints them.
Recorded attestations records, shows, removes and lists a session's attestation and shows the task
standard. The terminal's commands and every refusal are on tama attestation.
#States
Before any read: No plan has been read yet — The plan is derived from the bundled release and your home directory. Nothing is written to read it. — with a Read the plan action. A failed read shows Install plan could not be read with the error verbatim and Retry; a plan document
without an archiveRoot string and levels object is refused as
malformed rather than partially rendered.
The mutation this plan previews — the transactional install itself — is
documented in hook-releases; the
user-global Git dispatcher install has a runnable example at
../../examples/operations/install-user-git-hooks.sh.