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