CLI Reference
Every command, flag, and option with examples
Table of Contents
- Global Options
- Environment Variables
- Setup
- Plan Views
- Task Lifecycle
- Query & Explanation
- Agent Management
- Remote Plans (hence.run)
- Utility
Global Options
These flags are accepted by every hence command. They can appear
before or after the subcommand. Values set via flags take precedence over
environment variables.
| Flag | Description |
|---|---|
--agent AGENT |
Agent name to act as. Overrides the HENCE_AGENT environment variable. |
-f, --file FILE |
Path to a local .spl plan file, a hence://PASSPHRASE P2P URL, or a https://hence.run/p/TOKEN hosted URL. Overrides the HENCE_PLAN environment variable. |
--no-color |
Disable ANSI color output. Useful when redirecting output to a file or a tool that does not support color codes. |
-q, --quiet |
Suppress non-essential output. Only errors and explicit results are printed. |
-h, --help |
Print help text for the command and exit. |
-V, --version |
Print the installed hence version and exit. |
Environment Variables
Environment variables provide defaults that apply across your shell session. They are convenient for interactive use and in CI pipelines where specifying flags on every command would be repetitive.
| Variable | Description |
|---|---|
HENCE_AGENT |
Default agent name used by all commands that accept --agent.
Set this in your shell profile to avoid repeating --agent on
every invocation.
|
HENCE_PLAN |
Default plan file (local path, hence://PASSPHRASE P2P URL,
or https://hence.run/p/TOKEN hosted URL) used by all commands
that accept a plan argument. Useful when you are working in a single plan
for an extended session.
|
# Set once, omit from every command
export HENCE_AGENT=alice
export HENCE_PLAN=plan.spl
hence task next # equivalent to: hence task next plan.spl --agent alice
hence plan board # equivalent to: hence plan board plan.spl
Setup
Commands for creating and validating plan files before any agents start working.
hence plan init <file.spl>
Create a new plan file from a template. The generated .spl file
contains a skeleton with all mandatory sections filled in with placeholder
values: a (meta plan ...) block, an (agents ...)
block, a sample task with readiness rules, and default assignment rules. Open
the file and replace the placeholders to describe your actual project.
Synopsis
hence plan init <file.spl>
Arguments
| Argument | Description |
|---|---|
<file.spl> |
Path where the new plan file will be written. The file must not already exist. |
Examples
hence plan init project.spl
hence plan init ~/work/my-feature/plan.spl
plan init, open the file and replace the placeholder
agent names, task IDs, and task descriptions before sharing it with your team.
hence plan validate <file> [--strict] [--json]
Parse and type-check a plan file, reporting all errors and warnings. The validator checks for syntax errors, undefined task references in dependency edges, duplicate IDs, unreachable tasks, and other structural problems. Use this command in CI before merging changes to a plan.
Synopsis
hence plan validate <file> [--strict] [--json]
Arguments & Flags
| Flag | Description |
|---|---|
<file> |
Path to the .spl plan file to validate. |
--strict |
Treat warnings as errors. The command exits with a non-zero code if any warning is found, making it safe for use as a CI gate. |
--json |
Emit results as a JSON array of diagnostic objects instead of human-readable text. |
Examples
# Basic validation — shows errors and warnings
hence plan validate plan.spl
# Fail on any warning (good for CI)
hence plan validate plan.spl --strict
# Machine-readable output for tooling
hence plan validate plan.spl --strict --json
Plan Views
Read-only commands that render different projections of a plan's current state. None of these commands modify the plan file.
hence plan board <file> [OPTIONS]
Render a Kanban-style task board in the terminal. Tasks are organised into five columns: BACKLOG (not yet ready), READY (assignable), IN PROGRESS (claimed), BLOCKED, and DONE. This is the primary day-to-day view for humans monitoring a running plan.
Synopsis
hence plan board <file> [--agent NAME] [-v] [--tree] [--dag] [--json] [--format FORMAT]
Flags
| Flag | Description |
|---|---|
--agent NAME |
Filter the board to show only tasks assigned to or claimable by NAME. |
-v |
Verbose mode. Includes task descriptions and dependency annotations beneath each task card. |
--tree |
Render the board as an indented dependency tree rather than columns. |
--dag |
Render the board as a directed acyclic graph (DAG) representation of task dependencies. |
--json |
Emit the board state as structured JSON, suitable for piping into other tools. |
--format FORMAT |
Delegate rendering to an external formatter plugin named hence-board-{FORMAT}, which must be on your PATH. |
Examples
# Default Kanban board
hence plan board plan.spl
# Verbose board with descriptions
hence plan board plan.spl -v
# Show only alice's tasks
hence plan board plan.spl --agent alice
# Dependency tree view
hence plan board plan.spl --tree
# DAG view
hence plan board plan.spl --dag
# Machine-readable JSON for scripting
hence plan board plan.spl --agent alice --json
hence plan status <file> [OPTIONS]
Display every fact and rule conclusion currently provable by the defeasible
reasoner. This is the authoritative low-level view of what the reasoner
"knows" about a plan at a given moment. Useful for debugging unexpected board
states — if a task is not appearing as READY, plan status will
show you exactly which conclusions are present and which are absent.
Synopsis
hence plan status <file> [--json] [--trust] [--at TIME] [--policy FILE]
Flags
| Flag | Description |
|---|---|
--json |
Emit all conclusions as a JSON array. |
--trust |
Show trust weights alongside each conclusion. |
--at TIME |
Reason as-of a specific point in time (ISO 8601, e.g. 2026-01-15T10:00:00Z). Useful for auditing historical plan states. |
--policy FILE |
Path to a trust policy file to apply when evaluating conclusions. |
Examples
# List all derived conclusions
hence plan status plan.spl
# Machine-readable output
hence plan status plan.spl --json
# Show trust weights
hence plan status plan.spl --trust
# Reason as-of a historical point in time
hence plan status plan.spl --at 2026-01-15T10:00:00Z
hence plan summary <file> [--json]
Print a compact progress overview for the plan. Shows total task count, a breakdown of tasks by state (BACKLOG / READY / IN PROGRESS / BLOCKED / DONE), and an overall completion percentage. Intended for quick status checks and dashboard integrations.
Synopsis
hence plan summary <file> [--json]
Flags
| Flag | Description |
|---|---|
--json |
Emit the summary as a JSON object. |
Examples
hence plan summary plan.spl
# Machine-readable summary
hence plan summary plan.spl --json
Example output:
Plan: My Feature (v1.0)
Tasks: 8 total | 2 done | 1 in-progress | 3 ready | 2 backlog
Progress: 25% complete
hence plan info <file> [--json]
Show the plan's metadata as declared in its (meta plan ...) block.
Displays the plan's id, title, version, status, description, and author fields.
Use this to quickly confirm which plan version you are working with, or to
extract metadata programmatically.
Synopsis
hence plan info <file> [--json]
Flags
| Flag | Description |
|---|---|
--json |
Emit the metadata as a JSON object. |
Examples
# Human-readable metadata
hence plan info plan.spl
# JSON for scripting
hence plan info plan.spl --json
Task Lifecycle
Commands that advance tasks through their states: from READY through IN
PROGRESS to DONE (or BLOCKED). All write commands append a timestamped
(claims ...) block to the plan file — they never edit existing
lines, preserving a full audit trail.
hence task next <file> [--agent NAME] [--json]
Show the next available actions for the current agent. Queries the reasoner
for all tasks that are READY and assigned to the agent, then prints them with
copy-pasteable hence task claim commands so you can proceed
immediately. This is the recommended starting point at the beginning of each
work session.
Synopsis
hence task next <file> [--agent NAME] [--json]
Flags
| Flag | Description |
|---|---|
--agent NAME |
Show next tasks for NAME rather than the agent set by HENCE_AGENT. |
--json |
Emit available tasks as a JSON array. |
Examples
# Set your agent identity once
export HENCE_AGENT=alice
# See what to work on next
hence task next plan.spl
# Check tasks for a different agent
hence task next plan.spl --agent bob
# JSON output for automation
hence task next plan.spl --json
hence task assign [file] [--json]
Display all agent-to-task assignment conclusions currently derived by the
reasoner. Lists every assign-to-TASK-AGENT fact that is currently
provable.
Synopsis
hence task assign [file] [--json]
Flags
| Flag | Description |
|---|---|
--json |
Emit assignments as JSON. |
Examples
# All current assignments
hence task assign plan.spl
# Assignments as JSON
hence task assign plan.spl --json
hence task claim <task> [file] [--agent NAME] [--force]
Claim a task, marking it as IN PROGRESS. Appends a timestamped
(claims ...) block to the plan file containing a
(given claimed-TASK) assertion, signed with the agent's identity.
A task must be in the READY state before it can be claimed. Claiming is
idempotent — claiming an already-claimed task by the same agent is a no-op.
Synopsis
hence task claim <task> [file] [--agent NAME] [--force]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<task> |
The task ID to claim (as declared in the plan). |
[file] |
Plan file to update. Defaults to HENCE_PLAN if set. |
--agent NAME |
Claim the task on behalf of NAME. Defaults to HENCE_AGENT. |
--force |
Force claim even if the task is not ready. |
Examples
# Claim the "setup" task (agent from HENCE_AGENT)
hence task claim setup plan.spl
# Claim on behalf of a specific agent
hence task claim setup plan.spl --agent alice
# Force claim a task that is not yet ready
hence task claim setup plan.spl --force
hence task unclaim <task> [file]
Release a previously claimed task, reverting it to the READY state. Useful
when an agent needs to hand off work or when a claim was made in error.
Appends a (retracts claimed-TASK) statement to the plan file.
The agent identity is always resolved from the HENCE_AGENT
environment variable.
Synopsis
hence task unclaim <task> [file]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<task> |
The task ID to release. |
[file] |
Plan file to update. |
Examples
# Release the "setup" task so another agent can claim it
hence task unclaim setup plan.spl
hence task complete <task> [file]
Mark a task as DONE. Appends (given completed-TASK) to the plan
inside a signed (claims ...) block. Completing a task unlocks any
downstream tasks whose readiness rules depend on this task being done — they
will transition to READY on the next board refresh. The agent identity is
always resolved from the HENCE_AGENT environment variable.
Synopsis
hence task complete <task> [file]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<task> |
The task ID to mark complete. |
[file] |
Plan file to update. |
Examples
# Mark "setup" as done
hence task complete setup plan.spl
hence task block <task> <reason> [file]
Block a task with a human-readable reason string. The task will appear as
BLOCKED on the board until explicitly unblocked. Blocking is recorded as a
timestamped claim so the reason and who blocked it are part of the audit trail.
Use this to signal that external action is required before the task can proceed.
The agent identity is always resolved from the HENCE_AGENT
environment variable.
Synopsis
hence task block <task> <reason> [file]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<task> |
The task ID to block. |
<reason> |
A human-readable string explaining why the task is blocked. Enclose in quotes if it contains spaces. |
[file] |
Plan file to update. |
Examples
# Block "deploy" pending security sign-off
hence task block deploy "waiting for security sign-off" plan.spl
# Block "integrate" with a multi-word reason
hence task block integrate "third-party API returning 503" plan.spl
hence task unblock <task> [file]
Remove a block from a previously blocked task, returning it to its natural
state as determined by the reasoner (typically READY if prerequisites are met).
Appends a retraction of the blocking claim to the plan file. The agent identity
is always resolved from the HENCE_AGENT environment variable.
Synopsis
hence task unblock <task> [file]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<task> |
The task ID to unblock. |
[file] |
Plan file to update. |
Examples
# Clear the block on "deploy"
hence task unblock deploy plan.spl
hence task assert <spl> [file] [--agent NAME] [--task TASK]
Assert arbitrary SPL facts or rules into a plan. The expression is appended
inside a signed (claims ...) block. This is the general-purpose
escape hatch for recording findings, intermediate results, or new defeasible
rules that were not anticipated at plan-authoring time. Use --task
to tag the assertion with the task you are currently working on, so the
provenance is clear in the audit trail.
Synopsis
hence task assert <spl> [file] [--agent NAME] [--task TASK]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<spl> |
A valid SPL expression (fact or rule) to assert. Wrap in single quotes to protect special characters from the shell. |
[file] |
Plan file to update. |
--agent NAME |
Sign the assertion as NAME. Defaults to HENCE_AGENT. |
--task TASK |
Tag the assertion with the task ID you are working on, for provenance tracking. |
Examples
# Assert a simple fact
hence task assert '(given tests-passing)' plan.spl
# Assert a fact tagged to the current task
hence task assert '(given integration-approved)' plan.spl --task review
# Assert a new defeasible assignment rule
hence task assert '(normally r-new (and ready-x agent-y-available) assign-to-x-y)' plan.spl
hence query explain.
Query & Explanation
Commands for introspecting the reasoner's conclusions — both what is provable and why, and what is not provable and why not. These commands are read-only.
hence query explain <literal> <file> [--json]
Show the full proof tree for a given conclusion. Explains step-by-step why
the reasoner considers a literal to be true, tracing back through each rule
and supporting fact. Proof nodes are annotated with provability markers:
+D means definitely provable (strict proof),
+d means defeasibly provable (could be defeated by a
stronger rule), and -D / -d indicate unprovability.
Synopsis
hence query explain <literal> <file> [--json]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<literal> |
The conclusion to explain (e.g. ready-auth, assign-to-auth-coder). |
<file> |
The plan file to reason over. |
--json |
Emit the proof tree as JSON. |
Proof notation
| Marker | Meaning |
|---|---|
+D | Definitely provable (strict, cannot be defeated) |
+d | Defeasibly provable (holds unless defeated by a stronger rule) |
-D | Definitely not provable |
-d | Defeasibly not provable |
Examples
# Why is "ready-auth" true?
hence query explain ready-auth plan.spl
# Explain an assignment conclusion
hence query explain assign-to-auth-coder plan.spl
# JSON proof tree for tooling
hence query explain assign-to-auth-coder plan.spl --json
hence query why-not <literal> <file> [--json]
Debug why a conclusion is not provable. Shows which preconditions are missing or which defeating rules are active. This is the primary diagnostic tool when a task is stuck in BACKLOG or an expected assignment is not appearing.
Synopsis
hence query why-not <literal> <file> [--json]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<literal> |
The conclusion you expect to hold but does not. |
<file> |
The plan file to reason over. |
--json |
Emit the diagnosis as JSON. |
Examples
# Why isn't "ready-deploy" provable yet?
hence query why-not ready-deploy plan.spl
# Debug a missing completion fact
hence query why-not completed-auth plan.spl --json
hence query require <literal> [file] [-v] [--assume FACTS]
Abductive reasoning: given a goal literal, compute the minimal sets of additional facts that, if asserted, would make the literal provable. This is useful for planning — it tells you exactly what needs to happen before a task can become READY or before an assignment can be made.
Synopsis
hence query require <literal> [file] [-v] [--assume FACTS]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<literal> |
The goal literal to derive requirements for. |
[file] |
The plan file to reason over. Defaults to HENCE_PLAN if set. |
-v |
Verbose output — shows additional explanation of each requirement. |
--assume FACTS |
Comma-separated list of facts to treat as already true when computing requirements. Useful for exploring "what else do I still need?" |
Examples
# What's needed to make "ready-deploy" provable?
hence query require ready-deploy plan.spl
# Same, assuming ops availability is already guaranteed
hence query require assign-to-deploy-ops plan.spl --assume 'agent-ops-available'
# Verbose output with explanations
hence query require ready-deploy plan.spl -v
hence query what-if <file> <facts...> [--json]
Hypothetical reasoning: given a set of additional facts, compute which conclusions would change compared to the current plan state. Shows new conclusions that would become provable and existing conclusions that would be retracted. Useful for reasoning about the effect of completing tasks or asserting findings before actually committing those changes to the file.
Synopsis
hence query what-if <file> <facts...> [--json]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<file> |
The plan file to reason over. |
<facts...> |
One or more SPL fact expressions to add hypothetically. Each must be a valid SPL literal. |
--json |
Emit the diff of changed conclusions as JSON. |
Examples
# What happens if tests pass and review is approved?
hence query what-if plan.spl '(given tests-passing)' '(given review-approved)'
# Hypothetical agent availability
hence query what-if plan.spl '(given agent-ops-available)' --json
hence query describe <file> <labels...> [--json]
Show the definition and metadata for one or more labeled elements in the plan — tasks, rules, agents, or other named constructs. Useful for quickly looking up what a rule does or what a task's description says without opening the raw plan file.
Synopsis
hence query describe <file> <labels...> [--json]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<file> |
The plan file to inspect. |
<labels...> |
One or more labels to describe. You can pass multiple labels separated by spaces. |
--json |
Emit descriptions as JSON. |
Examples
# Describe a task
hence query describe plan.spl task-auth
# Describe a rule
hence query describe plan.spl r-assign-security --json
# Describe multiple elements at once
hence query describe plan.spl task-auth task-deploy r-ready-deploy
hence query trace <file>
Emit a full reasoning trace showing every rule that was evaluated during the reasoning pass: which rules fired (produced a conclusion), which were considered but did not fire (preconditions not met), and which were defeated by a higher-priority rule. Intended for deep debugging of complex defeasible reasoning scenarios.
Synopsis
hence query trace <file>
Examples
# Full reasoning trace
hence query trace plan.spl
# Pipe through a pager for large plans
hence query trace plan.spl | less
less or redirect to a file when working with complex plans.
Agent Management
Commands for managing agent identity and running automated agents against plan tasks.
hence agent whoami [--json]
Display the current agent's identity information. Prints four lines to stdout:
the supervisor role identity, the agent identity (using the name from
HENCE_AGENT if set, otherwise the Ed25519 short ID), the evaluator
role identity, and the libp2p PeerId used for P2P networking.
Synopsis
hence agent whoami [--json]
Flags
| Flag | Description |
|---|---|
--json |
Emit identity information as a JSON object with fields: supervisorId, agentId, evaluatorId, peerId, and publicKey. |
Example output
supervisor:ed25519:a1b2c3d4
agent:alice
evaluator:ed25519:e5f6g7h8
PeerId: 12D3KooWExamplePeerIdentityString
If HENCE_AGENT is not set, the agent line shows
agent:ed25519:SHORTID instead of the name.
Examples
# Print identity to terminal
hence agent whoami
# Machine-readable identity (includes publicKey field)
hence agent whoami --json
hence agent spawn [file] [OPTIONS]
Spawn an automated agent to execute a plan task. spawn runs a
full supervisor loop that: selects a task (or uses --task),
assembles context from the plan, launches the agent provider (e.g. Claude),
manages the lease and liveness heartbeat, evaluates the result, and optionally
merges the output and reports completion back to the plan. This is the core
command for automated multi-agent execution.
Synopsis
hence agent spawn [file] [--task TASK] [--agent NAME] [OPTIONS]
Flags
| Flag | Description |
|---|---|
--task TASK |
Execute a specific task. If omitted, spawn auto-selects the next available task assigned to this agent. |
--agent NAME |
Agent provider to use (e.g. claude, codex). Determines which LLM backend is invoked. |
--cleanup |
Remove the agent's worktree after the task completes. Keeps the working directory clean in long-running pipelines. |
--no-merge |
Skip the merge step and result reporting after the agent finishes. The agent runs but its output is not automatically integrated. |
--show-prompt |
Print the assembled prompt to stderr before launching the agent. Useful for reviewing context assembly without committing to a full run. |
--dry-run |
Assemble the context and print the prompt but skip launching the agent entirely. Combine with --show-prompt for inspection. |
--token-budget N |
Maximum token budget for context assembly. The assembler will trim plan context to stay within this limit. |
--lease-ttl DURATION |
Lease time-to-live as an ISO 8601 duration (e.g. PT30M for 30 minutes). The lease is renewed while the agent is active. |
--idle-timeout DURATION |
ISO 8601 duration. If the agent produces no output for this long, it is marked stale and the supervisor may intervene. |
--timeout DURATION |
ISO 8601 wall-clock timeout for the entire spawn operation. The agent is terminated if it has not finished by this deadline. |
--trust-plan-checks |
Trust evaluate-checks directives from the plan's (meta ...) block when evaluating task completion. |
--events FILE |
Emit structured NDJSON events to FILE, or - for stdout. Events cover lifecycle transitions: start, lease renewal, completion, failure. |
--session NAME |
Session name attached to all emitted events. Useful for correlating events from multiple concurrent spawns. |
--json |
Emit the final spawn result as a JSON object on stdout. |
Examples
# Auto-select and execute the next available task
hence agent spawn plan.spl
# Execute a specific task with a specific provider
hence agent spawn plan.spl --task auth --agent claude
# Spawn with cleanup and JSON result
hence agent spawn plan.spl --cleanup --json
# Stream events to stdout for monitoring
hence agent spawn plan.spl --events - --session my-run
# Inspect the assembled prompt without running the agent
hence agent spawn plan.spl --dry-run --show-prompt
# Spawn with a 30-minute lease and 2-hour wall-clock timeout
hence agent spawn plan.spl --lease-ttl PT30M --timeout PT2H
agent spawn requires the agent provider to be installed and
accessible on your PATH or configured via the hence agent
registry. See the LLM Integration guide for
setup instructions.
hence agent watch [file] [OPTIONS]
Watch a plan file for state changes. Polls the plan and emits events whenever
a task transitions state, an assignment changes, or a new claim is appended.
Can optionally auto-spawn agents when tasks become READY via --spawn.
Useful as a long-running daemon in CI or as a lightweight orchestrator.
Synopsis
hence agent watch [file] [OPTIONS]
Flags
| Flag | Description |
|---|---|
--spawn |
Auto-spawn agents for ready tasks. |
--cleanup |
Clean up worktrees after task completion. |
--max-tasks N |
Maximum number of tasks to auto-spawn before exiting. |
--delay SECS |
Delay in seconds between task checks (default: 5). |
--pool |
Enable worktree pool pre-allocation. |
--dry-run |
Pass --dry-run to spawned agents (requires --spawn). |
--events FILE |
Emit NDJSON events to FILE, or - for stdout. |
--session NAME |
Session name to tag emitted events (requires --events). |
--json |
Output state changes as JSON. |
Examples
# Watch for changes and print to terminal
hence agent watch plan.spl
# Watch and log events to a file
hence agent watch plan.spl --events events.jsonl
# Auto-spawn agents for ready tasks
hence agent watch plan.spl --spawn
# Auto-spawn with cleanup and a limit of 5 tasks
hence agent watch plan.spl --spawn --cleanup --max-tasks 5
# Watch with JSON output and tagged session events
hence agent watch plan.spl --json --events - --session my-run-2026
Remote Plans (hence.run)
Commands for publishing plans to hence.run and synchronising between local,
peer-to-peer, and hosted remote replicas. Hosted plans on hence.run are
identified by https://hence.run/p/TOKEN URLs. P2P plans are
identified by hence://PASSPHRASE addresses using BIP-39
passphrases (4 words, hyphen-separated).
hence remote new [file]
Publish a local plan file to hence.run. Creates a new hosted replica and
returns the https://hence.run/p/TOKEN URL for that plan. Once
published, any agent with the URL can sync the plan and append claims. The
file argument is optional; if omitted, HENCE_PLAN is used.
Synopsis
hence remote new [file]
Arguments
| Argument | Description |
|---|---|
[file] |
Local .spl plan file to publish. Defaults to HENCE_PLAN if set. |
Examples
# Publish plan.spl to hence.run
hence remote new plan.spl
# → https://hence.run/p/a1b2c3d4
hence remote cp <src> [dst] [--p2p]
Copy a plan between any combination of local file paths, P2P passphrases, and
hence.run-hosted URLs. Use this to push a local plan to a remote, pull a
remote plan to disk, or replicate between two remotes. The destination is
optional. Use --p2p to create a new P2P plan with a randomly
generated BIP-39 passphrase.
Synopsis
hence remote cp <src> [dst] [--p2p]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<src> |
Source: a local file path, a hence://PASSPHRASE P2P address, or a https://hence.run/p/TOKEN URL. |
[dst] |
Destination: a local file path, a P2P passphrase, or a hosted URL. Optional. |
--p2p |
Create a new P2P plan (generates a random BIP-39 passphrase as the destination). |
Examples
# Push local plan to a hosted remote
hence remote cp plan.spl https://hence.run/p/a1b2c3d4
# Pull a hosted plan to a local file
hence remote cp https://hence.run/p/a1b2c3d4 local.spl
# Create a new P2P plan from a local file (passphrase generated)
hence remote cp plan.spl --p2p
# Copy to a specific P2P passphrase
hence remote cp plan.spl hence://abandon-ability-able-about
hence remote ls [-v] [--json]
List all plans known to this installation: locally tracked plans, P2P replicas, and registered hence.run-hosted plans. Displays the plan identifier, local path (if any), and sync status for each.
Synopsis
hence remote ls [-v] [--json]
Flags
| Flag | Description |
|---|---|
-v, --verbose |
Show additional details for each plan (timestamps, peer counts, etc.). |
--json |
Emit the list as a JSON array. |
Examples
# List all registered plans
hence remote ls
# Verbose listing
hence remote ls --verbose
# Machine-readable output
hence remote ls --json
hence remote rm <plan> [--dry-run]
Archive a remote plan on hence.run. The plan is no longer served or synchronised, but its history is retained for audit purposes. This does not delete local files.
Synopsis
hence remote rm <plan> [--dry-run]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<plan> |
The https://hence.run/p/TOKEN URL of the remote plan to archive. |
--dry-run |
Print what would happen without actually performing the operation. |
Examples
# Archive a remote plan
hence remote rm https://hence.run/p/a1b2c3d4
# Preview what would be removed
hence remote rm https://hence.run/p/a1b2c3d4 --dry-run
hence remote serve [--listen ADDR]
Start a persistent P2P sync daemon for all registered plans. The daemon listens for incoming sync requests and keeps all local replicas up to date with remote changes. Run this in the background on an always-on machine to enable real-time collaboration without relying on hence.run polling.
Synopsis
hence remote serve [--listen ADDR]
Flags
| Flag | Description |
|---|---|
--listen ADDR |
Listen address in multiaddr format (default: /ip4/0.0.0.0/tcp/4001). |
Examples
# Start sync daemon in the foreground
hence remote serve
# Listen on a custom port
hence remote serve --listen /ip4/0.0.0.0/tcp/9000
# Run as a background process
hence remote serve &
hence remote forget [passphrase] [--dry-run]
Remove a P2P plan from this installation, identified by its BIP-39 passphrase (4 words, hyphen-separated). Deletes the local replica and clears cached credentials. Other peers still retain their copies. The passphrase argument is optional — if omitted, it is read from stdin.
Synopsis
hence remote forget [passphrase] [--dry-run]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
[passphrase] |
The BIP-39 passphrase (4 words, hyphen-separated, e.g. abandon-ability-able-about) identifying the P2P plan. If omitted, reads from stdin. |
--dry-run |
Print what would happen without actually performing the operation. |
Examples
# Forget a P2P plan by passphrase
hence remote forget abandon-ability-able-about
# Read passphrase from stdin (e.g. piped from a secrets manager)
hence remote forget
# Preview what would be forgotten
hence remote forget abandon-ability-able-about --dry-run
Utility
Miscellaneous commands for LLM integration, translation, interactive exploration, and shell setup.
hence llm [spl|dfl]
Print the LLM reference documentation for the SPL (Structured Plan Language)
or DFL (Defeasible Logic) format to stdout. Pipe this into an LLM's context
window so the model understands how to read and write .spl files.
This is the recommended way to inject format knowledge into an agent before
asking it to author or modify a plan.
Synopsis
hence llm [spl|dfl]
Arguments
| Argument | Description |
|---|---|
spl |
Output the SPL format reference (syntax, block types, examples). |
dfl |
Output the defeasible logic reference (rule forms, provability semantics). |
Examples
# Print SPL reference to terminal
hence llm spl
# Save to a file for use in a prompt
hence llm spl > /tmp/spl-ref.txt
# Pipe directly into an LLM call
hence llm spl | llm "Given the following SPL spec, write a plan for..."
hence plan translate <spec> [--output FILE] [--agent NAME] [--context TEXT]
Translate a markdown specification file into a complete .spl plan
using a headless agent. The agent reads the specification, infers tasks,
dependencies, agents, and readiness/assignment rules, and writes a plan
skeleton to --output (or stdout if omitted). Review the generated
plan before use — machine-generated plans may need manual refinement.
Synopsis
hence plan translate <spec> [--output FILE] [--agent NAME] [--context TEXT]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<spec> |
Path to the markdown requirements or specification file. |
--output FILE |
Path where the generated .spl plan will be written. If omitted, the plan is printed to stdout. |
--agent NAME |
Agent provider to use for translation (e.g. claude). |
--context TEXT |
Additional context to include in the translation prompt. |
Examples
# Translate a requirements file into a plan (output to stdout)
hence plan translate requirements.md
# Translate and save to a file
hence plan translate requirements.md --output plan.spl
# Translate using a specific agent provider
hence plan translate requirements.md --output plan.spl --agent claude
# Translate and immediately validate
hence plan translate requirements.md --output plan.spl && hence plan validate plan.spl
hence plan review <file> [--agent NAME] [--context TEXT] [--json]
Use a headless agent to review a plan for logical issues, ambiguities, missing dependencies, and potential improvements. The agent outputs a structured review report highlighting concerns ranked by severity. Does not modify the plan file.
Synopsis
hence plan review <file> [--agent NAME] [--context TEXT] [--json]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<file> |
The .spl plan file to review. |
--agent NAME |
Agent provider to use for review (e.g. claude). |
--context TEXT |
Additional context to include in the review prompt. |
--json |
Emit the review report as a JSON object. |
Examples
# Review a plan with the default agent
hence plan review plan.spl
# Review using a specific agent provider
hence plan review plan.spl --agent claude
# Machine-readable review output
hence plan review plan.spl --json
hence repl [file]
Start an interactive REPL (Read-Eval-Print Loop) for querying a plan. In the
REPL you can run query commands, inspect conclusions, and explore hypothetical
states interactively without constructing full shell commands. If no file is
provided, the REPL starts without a plan loaded and you can open one with
:load <file> inside the session.
Synopsis
hence repl [file]
Arguments
| Argument | Description |
|---|---|
[file] |
Optional plan file to load at startup. |
Examples
# Start REPL with a plan pre-loaded
hence repl plan.spl
# Start REPL with no plan (load later with :load)
hence repl
hence session <name> [--json]
Show details for a session by name: its plan path, status, task states, and progress. The argument is a session name string, not a file path.
Synopsis
hence session <name> [--json]
Arguments & Flags
| Argument / Flag | Description |
|---|---|
<name> |
The session name to look up. |
--json |
Emit session details as a JSON object. |
Examples
# Show details for a named session
hence session my-run-2026-01-15
# Machine-readable output
hence session my-run-2026-01-15 --json
hence sessions [--json]
List all active and recent sessions managed by this hence installation. Displays session name, associated plan path, current status, and timestamps for the most recent activity. Useful for monitoring long-running agent pipelines from a control terminal.
Synopsis
hence sessions [--json]
Flags
| Flag | Description |
|---|---|
--json |
Emit the sessions list as a JSON array. |
Examples
# List all sessions
hence sessions
# Machine-readable output
hence sessions --json
hence completions <shell>
Generate shell completion scripts for hence. Completions enable
tab-completion for subcommands, flags, and plan file paths in your shell.
Supported shells include bash, zsh, fish,
and others. Append the output to your shell's startup file to enable completions
permanently.
Synopsis
hence completions <shell>
Arguments
| Argument | Description |
|---|---|
<shell> |
Target shell. Common values: bash, zsh, fish. |
Examples
# Enable bash completions permanently
hence completions bash >> ~/.bashrc
# Enable zsh completions permanently
hence completions zsh >> ~/.zshrc
# Enable fish completions
hence completions fish > ~/.config/fish/completions/hence.fish
hence skill install
Install the Claude Code skill for hence. This registers hence-specific instructions and tool definitions with the Claude Code environment so that Claude can natively read plans, claim tasks, assert findings, and call other hence commands during a coding session. Run this once per machine after installing hence and Claude Code.
Synopsis
hence skill install
Examples
hence skill install
hence skill install, restart Claude Code or open
a new session for the skill to take effect.
All commands accept -h, --help for inline help.
Run hence --version to confirm your installed version.