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

init

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)
signin

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)
backup

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)
connect

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)
whoami

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
doctor

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)
config

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

start

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]...

[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
continue

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]...

[REST]...
Harness + model (canonical or sugar), plus --cwd , --seq , --print-cmd, --no-sync
--no-capture
Skip the automatic post-exit session capture
run

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]...

[REST]...
Harness + model (canonical or sugar), the positional , plus --cwd, --seq, --print-cmd, --no-sync
--no-capture
Skip the automatic post-exit session capture
chat

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
agent

Manage the per-agent seat homes (agents// under the tally home).

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
ui

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

memory

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 [AGENT]

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)
character

The agent's standing instructions, injected at every launch alongside memory. A fresh `start` carries it too: fresh session, same self.

tally character [AGENT]

show
Print the current character document
edit
Edit in $VISUAL/$EDITOR; saves as a new version
adapter

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

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
status

Print the event count and whether the hash chain verifies.

tally status

session

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
push

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

Pull your seat's deltas from another device and apply them locally (idempotent; the hash chain is re-verified after apply).

tally pull

sync

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

channel

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)
msg

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)