Skip to main content
Back to CLI Docs

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.

VersionDateSummary
v2.62026-05Predict-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.52026-05solid 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.42026-05solid predict surface — deal-close, no-show, payment-late, targets. Tabular Foundation Model engine (TabPFN-v2) — zero-shot under tenant data.
v2.02026-04-30Agent-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.262026-04-22Tenant graph diff + N-Quads/Turtle dump. Pipe into Jena, Neo4j, Blazegraph, GraphDB, Neptune.
v1.242026-04-18Offline mutation queue. Auto-detects connectivity loss. solid push --flush replays. Idempotency keys travel with each queued mutation.
v1.222026-04-14JSON-LD tenant graph + SPARQL 1.1 (offline BGP + online --server). Self-describing JSON-LD per @type.
v1.212026-04-10solid graph — typed walk of every Company/Service/Product/Agent/KB/Chain/Webhook.
v1.102026-03-28Opt-in JSON envelopes via SOLID_JSON_V2=1. AI-Driven CLI with 4-layer safety (mode caps, destructive gate, sandbox, backend enforcer).
v1.02026-03-15First public release. solid auth login, pull, push, kb, pages, ai.

v2.0 — Agent-Ready by Default

Breaking

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

2.0 default — structured envelope
$ 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"
  }
}
Opt-out — restore 1.x prose
$ 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=1 in 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)

Stable

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

solid graph --querySPARQL

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

Terminal
solid graph --query \
  "SELECT ?s WHERE { ?s a schema:Service }"

solid graph --query "..." --server      # full SPARQL 1.1
solid push --queueoffline-first

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

Terminal
solid push --queue       # arm offline mode
solid push --flush       # replay queued mutations
# or just lose connectivity — it auto-queues + auto-replays
solid graph --diffCI gate

Structural diff between a baseline snapshot and the current graph. Exit code is the signal — gate CI on tenant stability.

Terminal
solid graph --diff baseline.jsonld --offline \
  || echo "tenant drifted"
solid graph --dumpN-Quads / Turtle

Pipe the tenant graph into Apache Jena Fuseki, Neo4j, Blazegraph, GraphDB, or Neptune. N-Quads is the canonical lossless format every RDF store accepts.

Terminal
solid graph --dump nquads --offline \
  | tdbloader2 --loc /var/jena/db -

AI-Driven CLI

Stable

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

solid aistupid easy

Auto-detects Claude Code / Cursor / Codex, refreshes company context, launches your AI with everything it needs to reason about your business.

Terminal
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 session
solid installonce, ever

Wires a Claude Code SessionStart hook so claude auto-refreshes .claude/CLAUDE.md every session. Idempotent. Undo with --uninstall.

Terminal
solid install
solid auth login
claude                           # context already fresh

Four layers of safety

LayerWhat it doesWhere
Mode capRefuses out-of-scope verbs before they parseCLI (client-side)
Destructive gaterefund / delete / cancel / revoke require --yesCLI (client-side)
SandboxEvery mutation intercepted; AI sees what would happenCLI dry-run
Backend enforcerServer-side mirror so scripted HTTP can’t bypassBackend middleware
Mode caps--mode

Scope what the AI can touch. Client and server both enforce, so a compromised HTTP client can't bypass.

customer — CRM, orders, voice, analytics
developer — pages, push, sandbox, vibe
agency — switch, company, users, train
full — no cap (default for humans)
Terminal
solid ai --mode customer
solid ai --mode developer --sandbox
Sandbox--sandbox

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

Terminal
solid ai --sandbox
# → "Sandbox: ON — every mutation intercepted."
# Agent runs freely. Re-run without --sandbox to apply.
solid agent activityaudit trail

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.

Terminal
solid agent activity                # 24h summary card
solid agent activity --range 7d     # weekly
solid agent activity --events       # raw feed
solid agent activity --json         # programmatic
Release history — @solidnumber/cli changelog | Solid#