Release history
Every shipped version of @solidnumber/cli — the first CLI built for AI agents. Newest at the top.
Authored by Adam Campbell · BSL-1.1 (converts to Apache 2.0 on 2030-04-14) · GitHub · npm
All releases
Quick scan. Each row is one published version. The deep-dives for the architecturally significant releases follow below.
| Version | Date | Summary |
|---|---|---|
| v2.11.12 | 2026-05 | Sales Agent CLI — 18 AI-powered sales verbs. solid sales pipeline / prospects / sources / forecast / report / velocity / followup / win-rate for read-only intelligence. solid sales score / suggest / outreach / opportunities / compare for AI-powered suggestions using your industry KB (54 templates). solid sales qualify / advance / close / nurture / sequence for consent-gated mutations. Voice handoff: nurture --channel voice schedules outbound AI calls; inbound calls from nurtured leads see the full sales context. Wired to 5 agents (Jackson, ADA, Emma, Marcus, Devon). New "Sales" persona group in solid --help. |
| v2.11 | 2026-05 | Outbound voice + universal verb dispatch. solid voice call <phone> and solid voice text <phone> dispatch ADA to place real outbound calls and send SMS — same tenant rate limits as inbound. solid voice translate enable|disable|status <phone> toggles per-phone live speech-to-speech translation (13 output languages; opt-in, Pro+ tier). solid agent dispatch <verb> is the universal entry point — call any of the agent-attraction verbs across every business function through one command. New shortcut commands solid deal, solid calendar, solid lead-promote promote the highest-traffic CRM/scheduling flows to first-class. solid voice health is a per-tenant voice-readiness audit. |
| v2.10 | 2026-05 | Multi-site operator commands. solid sites list shows every tenant the calling identity can access; solid sites switch <slug> rebinds .solid/manifest.json in-place — agents handling multiple tenants no longer need to track slugs by hand. The agent-attraction surface continues to ship declare-once across five transports. |
| v2.9 | 2026-05 | Universal verb invoker — AI-first by default. The agent-attraction surface is now declare-once on the backend (services/agent_verb_manifest.py) and auto-bridged to five transports (HTTP, MCP stdio, WebMCP, UCP, CLI). solid verbs list auto-discovers every verb from GET /api/v1/agent/verbs (public, no auth). solid verbs describe returns JSON Schema for agent validators. solid verbs invoke auto-routes GET vs POST. A new verb declared in the backend manifest lights up the CLI on the next session — no CLI release required. 13 parity assertions guarantee drift across the four transport registries cannot ship. |
| v2.8 | 2026-05 | Agent-attraction primitives in the CLI. solid transaction (start/append/commit/abort/get) wires the backend's atomic-batch substrate — single rollback point for an agent that needs to run N mutations as one unit. solid manifest prints the tenant JSON-LD manifest (@context + entity IRIs + capability graph) so agents can plan against a single canonical retrieval. solid audit log (paginated, cursor-based, JSON/JSONL/table) hits the new /api/v1/agent/audit endpoint. The terminal is now the operator-side of the agent-attraction surface; the same verbs are MCP-discoverable from Claude Code / Cursor and HTTP-callable from any agent runtime. |
| v2.7 | 2026-05 | Agent transports go cross-runtime. First-class solid webmcp + solid ucp verbs. The same JSON-LD verb registry is now drivable from stdio MCP (your AI editor), in-browser WebMCP (navigator.modelContext, 31 verbs across 5 surfaces), and UCP (signed buyer-agent wire format). One vocabulary, three transports. |
| v2.6 | 2026-05 | Predict-and-Act GA — TabPFN-v2 (Nature 2025) zero-shot tabular foundation model wired through solid predict. Day-1 predictions on tiny histories, no per-tenant training, no cold-start. Devon auto-discovers new predict targets nightly. Q-Chain auditor surface (solid qchain export/verify/audit-key) — external auditors validate the agent-action chain offline against /.well-known/qchain.json. Email capture on solid demo create with Sarah-drafted Layer 2 outreach. Magic-link install. brew + scoop distribution. |
| v2.5 | 2026-05 | solid tenant gate-debug — compute-budget activity gate returns its full decision with a machine-readable reason code (dormant_no_activity_ever, owner_allowlist_billing_exempt, …) so agents pattern-match instead of inferring. |
| v2.4 | 2026-05 | solid predict surface — deal-close, no-show, payment-late, targets. Tabular Foundation Model engine (TabPFN-v2) — zero-shot under tenant data. |
| v2.0 | 2026-04-30 | Agent-ready by default. Structured JSON error envelopes ship out of the box; SOLID_LEGACY_ERRORS=1 restores 1.x prose for legacy human-written scripts. |
| v1.26 | 2026-04-22 | Tenant graph diff + N-Quads/Turtle dump. Pipe into Jena, Neo4j, Blazegraph, GraphDB, Neptune. |
| v1.24 | 2026-04-18 | Offline mutation queue. Auto-detects connectivity loss. solid push --flush replays. Idempotency keys travel with each queued mutation. |
| v1.22 | 2026-04-14 | JSON-LD tenant graph + SPARQL 1.1 (offline BGP + online --server). Self-describing JSON-LD per @type. |
| v1.21 | 2026-04-10 | solid graph — typed walk of every Company/Service/Product/Agent/KB/Chain/Webhook. |
| v1.10 | 2026-03-28 | Opt-in JSON envelopes via SOLID_JSON_V2=1. AI-Driven CLI with 4-layer safety (mode caps, destructive gate, sandbox, backend enforcer). |
| v1.0 | 2026-03-15 | First public release. solid auth login, pull, push, kb, pages, ai. |
v2.0 — Agent-Ready by Default
BreakingStructured JSON error envelopes — opt-in since 1.10 via SOLID_JSON_V2=1 — are now on by default. Every --json error response ships code, status, hint, docs_url, request_id, and tier/feature/upgrade context. AI agents (Claude Code, Cursor, Codex) work out of the box; humans see the same prose they always did.
$ solid kb get 99 --json
{
"error": {
"code": "NOT_FOUND",
"status": 404,
"message": "KB entry 99 not found",
"hint": "Run \"solid kb list\" to see valid IDs",
"docs_url": "https://solidnumber.com/docs/cli#kb",
"request_id": "req_8f2a3c"
}
}$ SOLID_LEGACY_ERRORS=1 solid kb get 99 --json
Error: KB entry 99 not found
Hint: Run "solid kb list" to see valid IDs
# 1.x scripts that pattern-match prose still work.Migration in 30 seconds
- • You wrote scripts that parse JSON errors: already on the new shape if you set
SOLID_JSON_V2=1— nothing changes. - • You wrote scripts that grep prose error text: set
SOLID_LEGACY_ERRORS=1in your shell or CI to restore the 1.x shape, then migrate when you have time. - • You drive the CLI from an AI agent: do nothing. The new shape is what you wanted all along.
Tenant Graph + Offline Mutations (v1.21 → v1.26)
StableYour tenant's entire surface — companies, services, products, agents, KB, chains, webhooks — ships as a typed JSON-LD graph. Walk it, query it with SPARQL, diff snapshots, dump it into any RDF store, and write to it from a plane.
Offline BGP runs in-process against the bundled .claude/solid-context.jsonld. Add --server for full SPARQL 1.1 (OPTIONAL, FILTER, property paths, UNION, GROUP BY).
solid graph --query \
"SELECT ?s WHERE { ?s a schema:Service }"
solid graph --query "..." --server # full SPARQL 1.1Lose wifi mid-mutation, the CLI auto-queues. Regain wifi, the next call auto-replays the queue. No flag, no ceremony. Or arm it explicitly with --queue for plane mode.
solid push --queue # arm offline mode
solid push --flush # replay queued mutations
# or just lose connectivity — it auto-queues + auto-replaysStructural diff between a baseline snapshot and the current graph. Exit code is the signal — gate CI on tenant stability.
solid graph --diff baseline.jsonld --offline \
|| echo "tenant drifted"Pipe the tenant graph into Apache Jena Fuseki, Neo4j, Blazegraph, GraphDB, or Neptune. N-Quads is the canonical lossless format every RDF store accepts.
solid graph --dump nquads --offline \
| tdbloader2 --loc /var/jena/db -AI-Driven CLI
StableThe CLI isn't just for humans anymore. Claude Code, Cursor, and Codex can drive every command on your behalf — with four safety layers so a hallucinating AI can't issue refunds or delete customer data.
Auto-detects Claude Code / Cursor / Codex, refreshes company context, launches your AI with everything it needs to reason about your business.
solid auth login
solid ai # launches detected AI for your current company
solid ai --as cursor # force Cursor
solid ai --no-context # skip the context refresh
solid ai --sandbox # safe-preview mode — every mutation intercepted
# Switching company (rare — agencies + multi-tenant operators):
solid auth me # shows your active company_id
solid auth companies # lists every company your account belongs to
solid ai --company <id> # override for this sessionWires a Claude Code SessionStart hook so claude auto-refreshes .claude/CLAUDE.md every session. Idempotent. Undo with --uninstall.
solid install
solid auth login
claude # context already freshFour layers of safety
| Layer | What it does | Where |
|---|---|---|
| Mode cap | Refuses out-of-scope verbs before they parse | CLI (client-side) |
| Destructive gate | refund / delete / cancel / revoke require --yes | CLI (client-side) |
| Sandbox | Every mutation intercepted; AI sees what would happen | CLI dry-run |
| Backend enforcer | Server-side mirror so scripted HTTP can’t bypass | Backend middleware |
--modeScope what the AI can touch. Client and server both enforce, so a compromised HTTP client can't bypass.
solid ai --mode customer
solid ai --mode developer --sandbox--sandboxEvery mutation the AI attempts is intercepted and mocked. The AI's reasoning still works because it sees a “would have worked” shape; nothing lands in real state.
solid ai --sandbox
# → "Sandbox: ON — every mutation intercepted."
# Agent runs freely. Re-run without --sandbox to apply.Every AI-driven request carries X-Solid-Agent, X-Solid-Agent-Mode, and X-Solid-Human-Initiator headers. The backend logs them so you always know what an AI did, in which mode, on behalf of whom.
solid agent activity # 24h summary card
solid agent activity --range 7d # weekly
solid agent activity --events # raw feed
solid agent activity --json # programmatic