reference
CLI reference.
Every verb in the current build (tally 0.1.0).
Summaries, usage, and flags are taken from the binary's own --help
output; nothing here is aspirational. Global flags: -h, --help and
-V, --version.
Onboarding
One-flow onboarding: identity (signin), harness check, relay (connect). Idempotent and re-runnable; composes signin + connect.
tally init [OPTIONS]
- --new-account-email
- Mint a throwaway account with this email for the connect step (testing)
- --skip-connect
- Onboard identity + harness only; skip the relay connect
- --quiet
- Do not print the recovery mnemonic
- --mnemonic-out
- Write the mnemonic to a file (created 0600; refuses to overwrite)
Generate (or recover) your stable agent identity. First call prints the 24-word BIP-39 recovery code; later calls re-display the identity.
tally signin [OPTIONS]
- --recover
- Recover an existing identity from its 24-word BIP-39 mnemonic
- --quiet
- Do not print the mnemonic (for agent/scripted contexts); prints the DID + a pointer only
- --mnemonic-out
- Write the mnemonic to this file instead (created 0600; refuses to overwrite)
The recovery ceremony. Init creates your agent's seed silently (OS keychain when available); this is the deliberate moment you back it up: prints the 24 words, confirms you stored them by asking two back. Anyone with the words owns the agent; losing them and the machine loses the agent. Doctor reminds you until it is done.
tally backup [--status] [--yes-i-stored-it]
- (default)
- Show the phrase + the two-word confirmation ceremony
- --status
- Backed-up state per agent
- --yes-i-stored-it
- Non-interactive attest (scripts, no tty)
Provision this seat onto its relay channel via the skytale device-grant; stores the channel-scoped credential to relay.json.
tally connect [OPTIONS]
- --api-key
- Owner API key (else reads $SKYTALE_API_KEY)
- --new-account-email
- Mint a fresh throwaway account (testing only)
- --channel
- Channel override (default: the seat's pronoic/agents/
) - --api-url
- API base URL (default: $SKYTALE_API_URL or https://api.skytale.sh)
- --relay-url
- Per-owner relay URL (WsTransport; pass a CF-DO relay, not the gRPC droplet)
- --seat
- Owner-facing seat label (default: cli-seat)
Print this seat's identity (DID), agent home, and relay channel. No secrets.
tally whoami [OPTIONS] [AGENT]
- [AGENT]
- Inspect a named agent's seat home (default: the base seat)
- --json
- Emit JSON instead of the human table
Diagnose the local setup: identity, home, harness installs, chat runtime, relay/api reachability, clock skew. Non-zero exit if any check fails.
tally doctor [AGENT]
- [AGENT]
- Diagnose a named agent's seat home (default: the base seat)
Read or write the non-secret CLI config (preferences + routing defaults). Refuses secret-looking keys; honors $TALLY_HOME.
tally config
- get [KEY]
- Print a config value (or all set keys)
- set
- Set a non-secret value (validated + persisted 0600)
- path
- Print the resolved config directory
Agents
Create/spin up a fresh agent under a chosen harness + model. Creates the identity if absent, then launches a new session. On exit the session is captured into the encrypted log automatically.
tally start
- [REST]...
- Harness + model, canonical (--harness
--model ) or sugar (--claude-code --fable-5), plus --cwd, --print-cmd - --no-capture
- Skip the automatic post-exit session capture
Resume an agent's portable encrypted log under a chosen harness + model: load the newest portable context, materialize it into the target harness's native store, launch its resume command. On exit the session is captured back into the log automatically.
tally continue
- [REST]...
- Harness + model (canonical or sugar), plus --cwd
, --seq , --print-cmd, --no-sync - --no-capture
- Skip the automatic post-exit session capture
One-shot a task on an agent under a chosen harness + model, non-interactively; resumes the agent's memory, injects the task, prints the result. On exit the session is captured into the encrypted log automatically.
tally run
- [REST]...
- Harness + model (canonical or sugar), the positional
, plus --cwd, --seq, --print-cmd, --no-sync - --no-capture
- Skip the automatic post-exit session capture
Run one Agent-SDK turn under your own Claude installation and persist it to the encrypted log. Requires the runtime .venv with claude-agent-sdk; no hosted model.
tally chat [OPTIONS]
- The prompt to send to the agent
- --continue
- Resume the last session from the encrypted log instead of starting fresh
Manage the per-agent seat homes (agents/
tally agent
- list
- List seats with last-activity + connection status
- rm
- Remove a seat's home (identity + log). Confirm-gated; refuses default
- rename
- Move a seat home. Refuses default; rejects an existing target
Open the full-screen terminal UI: the agent roster with the honest watch, the story picker (your contexts, decrypted locally with your seed, branch markers included), interactive continue/start launches (each in its own tmux window when tmux is running), and the adapter marketplace.
tally ui
The agent's curated memory: what it knows, distilled from captured sessions by your own harness one-shot (the reflect pass), owner-readable and owner-editable, encrypted in the log with hash-chained provenance. Injected into every launch.
tally memory
- show
- Print the current memory document
- edit
- Edit in $VISUAL/$EDITOR; saves as a new hash-chained version (16KB cap, enforced)
- reflect --harness
--model - Distill pending captures into memory now; the launch verbs run this in the background (config auto_reflect / reflect_model; per-launch --no-reflect)
The agent's standing instructions, injected at every launch alongside memory. A fresh `start` carries it too: fresh session, same self.
tally character
- show
- Print the current character document
- edit
- Edit in $VISUAL/$EDITOR; saves as a new version
Manage harness adapters: three ship built in (claude-code, pi, codex); any other harness can be added with a declarative TOML manifest. Community adapters are marked unverified and a manifest is data, never executed.
tally adapter
- list
- All adapters: built-ins (verified) + installed community manifests
- install
- Install from a git URL or local path. Validated first; refuses shell-exec patterns unless --allow-shell
- remove
- Remove an installed community adapter (built-ins refuse)
- search
- Search the community registry
- create
- Scaffold ./tally-adapter-
/adapter.toml with a commented template - validate
- Schema check + the PAC round-trip conformance smoke; non-zero exit on FAIL
The log
Interact with the local encrypted event log.
tally log
- append
- Append one event (--kind, default chat; --harness, default claude_code)
- verify
- Walk the entire hash chain; exit 0 if intact, 1 on tamper or gap
Print the event count and whether the hash chain verifies.
tally status
Cross-harness portable-agent-log: export, move, and verify coding sessions across machines and harnesses (operator-blind, context-level).
tally session
- export
- Extract the current harness session into the encrypted log as a canonical portable context, then auto-push it
- materialize
- Materialize a stored context into a harness's native session store
- show
- Print the digest (or raw JSON) of a stored portable context
- verify
- Verify the repo against the context's acceptance criteria; exit 0 iff every criterion is met
Publish new local-log deltas to your seat's channel, sealed with your seed-derived sync key (AES-256-GCM). The relay only ever sees ciphertext.
tally push
Pull your seat's deltas from another device and apply them locally (idempotent; the hash chain is re-verified after apply).
tally pull
Transparent sync: watch registered repos' native harness sessions and sync them automatically; no tally command needed once a repo is registered.
tally sync
- add
- Register a repo for transparent sync (opt-in per repo)
- watch
- Run the watch-export-pull-materialize engine in the foreground
- once
- Run exactly one engine tick, then exit
- map
- Map a repo exported at a different path on another device to its local path
- status
- Show registered repos, watermarks, and cursors
Rooms
Manage multi-party coordination channels (MLS groups).
tally channel
- create
- Owner: mint a channel (org/namespace/service) + become its first member
- invite
- Owner: mint an invite token to hand off to a distinct seat
- join
- Joiner: join with an invite token (blocks until admitted; --timeout-secs, default 300)
- admit
- Owner: admit pending joiners (also automatic on msg send/recv)
Send / receive operator-blind messages on a coordination channel.
tally msg
- send
- Broadcast a message to a channel (MLS-encrypted)
- recv
- Receive new messages (decrypt + print + persist)
- watch
- Block until a real peer message arrives, print it, exit 0. Own sends and epoch noise never wake it (--follow to stream; --interval, default 5s)