From the maker

Open Beta · v0.1.17 · live now

CASSANDRA

She was right. Nobody listened.

A terminal coding assistant for Claude, Gemini, GPT, Grok, POE, and whichever model lands next. Statically linked. Self-updating. Held to its own constitution.

curl -fsSL https://cass.tools/install | bash

Human architected·Agentically managed

click to copy ↓ keep reading
Keep reading ↓
The Terminal
It boots in 12 milliseconds.
The welcome screen draws before your shell finishes scrolling. Talk to Claude, Gemini, GPT, Grok, or any of 37+ models via POE and OpenRouter from one interface. Switch models mid-conversation with Ctrl+M. Stream responses word-by-word like the web version. Send pasted images straight into the conversation. The terminal IS the interface — there is no menu, no app, no electron wrapper.
The fastest path from "I have an idea" to "the model is replying" on any computer made in the last decade.
Cassandra welcome screen — nebula breathing behind gold title
Every AI terminal is a wrapper around someone else's binary.
Cassandra is the binary.
Pure Rust. Zero deps.
14 megabytes. musl static. Any Linux.
One ELF binary, statically linked against musl. No Node.js runtime, no npm install, no garbage-collected pauses, no transitive-dependency graph to audit. Runs on Ubuntu 18.04 through 24.04, Fedora, Arch, Alpine, Debian — any libc vintage, any kernel from 2012 onward. The install one-liner downloads a single 14 MB file and verifies its SHA-256 against the published manifest before executing.
It runs on the machine you have. There is no dependency to install first. There is no version of Node to update.
~ / terminal
$ file cass-tui
cass-tui: ELF 64-bit LSB static-pie,
  x86-64, statically linked

$ ldd cass-tui
        statically linked

$ du -h cass-tui
14M     cass-tui

$ cass-tui --version
cass-tui 0.1.17

$ time cass-tui --no-update -p "hi"
hi
real    0m0.012s
user    0m0.008s
sys     0m0.004s
Discoverable
If you can't find it, it isn't shipped.
Press Ctrl+P. Every feature, every model, every command lives in the palette. Fuzzy-searchable by any word you'd associate with it — type gpt and find Switch model; type sav cnv and find Save canvas. New users find what they need on the first try. Power users type three letters. The palette is the contract.
The learning curve is a ramp, not a wall. No hidden slash commands, no tribal knowledge.
Cassandra command palette with fuzzy search over glass panels
Type what you mean. The palette finds it.
Cryptographic Updates
Updates itself. Verifies every byte.
Every launch, Cassandra fetches cass.tools/manifest.json (3-second timeout, 1-hour cache), compares versions, and — if a newer release exists — downloads, verifies SHA-256, atomically renames in place via rename(2), and exec(2)s into the new binary with the original argv preserved. No package manager. No sudo. No "run brew upgrade" six weeks later. The old binary's inode stays alive for the running process; the new one takes over for the next exec.
You never run an old version. You never run an unverified one.
manifest.json
{
  "schema_version": 1,
  "version": "0.1.17",
  "released_at": 1775874490,
  "expires_at": 1775960890,
  "binaries": {
    "x86_64-...-gnu": {
      "url": "https://cass.tools/...",
      "sha256": "f4eaf51e...",
      "size": 13626424
    }
  }
}
The Arbiter
Your AI, held to your standard.
Two layers of alignment. Anthropic's Constitutional AI work bakes the first layer in at the model-training level — this is what makes Claude itself refuse to write malware and stay grounded under pressure. Cassandra adds the second layer at the user-and-runtime level: outputs can be reviewed against a constitution file you write, by a second model you pick (Gemma locally, or a hosted model in the cloud), that scores them for sycophancy, drift, hedging, evidence chain, and faithful reporting before they surface in your terminal. The arbiter is opt-in. Every score is logged. Every disagreement is surfaced for review.
Anthropic shapes what the model can be. Cassandra lets you shape what it's allowed to be at your terminal. Both layers, at once.
arbiter review
┌─ Arbiter Review ──────────────┐
│                              │
│  anthropic baseline   ✓ ✓ ✓    │
│  (constitutional AI,           │
│   training-level)              │
│  ──────────────────────────    │
│                              │
│  faithful reporting   9/10   │
│  load-bearing claims  8/10   │
│  evidence chain       9/10   │
│  sycophancy           1/10   │
│  hedging              2/10   │
│  drift from prompt    1/10   │
│  (cassandra layer,             │
│   runtime + user-level)        │
│                              │
│  verdict             PASS    │
│  judged by            gemma-3-27b  │
│                              │
└──────────────────────────────┘
Look — we crash, we bleed, we ship. Every byte from the network gets a hash before it touches the binary on disk because the alternative is asking strangers to trust me, and i don't even trust me sometimes.
Beta Discipline
Binaries that expire on purpose.
Every open-beta build embeds a 1-day expiry timestamp at compile time. When the clock runs out, Cassandra prompts Build Expired. Update? [Y/n], updates itself in place, and re-execs with the original argv. No version drift. No "works on my machine because I'm still on last Tuesday's build." Every beta tester is on a known-current version, always, with zero manual discipline required.
We'd rather wake the binary than wake a beta tester with a bug we already fixed.
cass-tui — expired build
$ cass-tui
Build Expired. Update? [Y/n] _

Updating cassandra to 0.1.18 ...
   sha256 verified
   atomic rename complete
   restarting with original argv

(back to normal launch)
Terminal Canvas
Plan on one side. Work on the other.
When the model writes a fenced code block, Cassandra's stream router detects it in real time and splits the output between the chat pane and a dedicated canvas. Scroll the chat and the canvas independently. Save artifacts to disk with /save-canvas. The canvas header shows the language, the line count, and which model wrote it — all live as the stream comes in.
The code you're building doesn't scroll away with the conversation.
Cassandra canvas — plan on one side, work on the other
Gems — the persona engine
Swap the brain. Keep the hands.
A Gem is a system prompt that reshapes how the model thinks without changing its tools. Press Ctrl+G to pick one. Drop a JSON file in ~/.cassandra/gems/ to author your own — sharable in a one-line gist. Canvas-aware Gems get a badge so you know which personas can talk to the side panel.
You don't configure prompts. You pick a role.
Cassandra Gems persona picker — swap the brain, keep the hands
Plus: 7 providers (Anthropic, OpenAI, Google, xAI, Z.AI, POE, OpenRouter), multi-key rotation on 429/529 backoff, OAuth login for Anthropic and OpenAI, headless --prompt and interactive TUI from one binary. Full tool parity with Claude Code. The palette is the contract.
How it compares
Cassandra vs Claude Code.
The obvious comparison: Claude Code, the official Anthropic CLI that runs on Node.js. Rows in the table to the right are verifiable by reading the cass source and running the binary. Where they overlap (one binary, headless+TUI, tool surface), they overlap. Where they don't, the gap is structural — different runtime, different update story, different posture toward the user's machine.
Against the broader OSS category — opencode, openhands, aider, gptme, codex, and the rest — Cassandra is the only one (at time of writing) that combines native Rust single-binary distribution, self-updating with cryptographic integrity, a GPU-accelerated terminal companion, and a constitutional arbiter layer.
Where they win: source code is available today. Where Cassandra wins: runtime, integration, the update story.
CassandraClaude Code
RuntimeRust (native)Node.js
Install footprint1 × 14 MBnpm + node_modules
Static linkingmusl, any distron/a
Update mechanismauto, sha-verifiednpm update
GPU terminalcass-termno
Multi-provider routingbuilt-insingle
Constitutional arbiterbuilt-inno
Beta expiry enforcementyesno
Headless + TUIone binaryone binary
Tool surfaceparitybaseline
Sourceopen betaclosed
Coming Soon
What's landing next.
Roughly in order. None of these are blocked on technical impossibility — only on builders, time, and review cycles. Eight items in flight; this list shrinks every few days.
Push loudly to bump priority. Beta testers get the first vote.
  • macOS (Apple Silicon + Intel)Native GitHub Actions macos-latest runner builds darwin binaries.
  • Homebrew tapbrew tap infntyjake/cass && brew install cass
  • Windows (x86_64)Native windows-latest runner; iwr install.ps1 | iex
  • Linux aarch64Raspberry Pi, Graviton, Ampere via musl cross.
  • cass-term Vulkan + nebula shaderGPU terminal companion; ships when the seam stabilizes.
  • Shared sessionsOne-time URL invites someone into a running cass session.
  • Worktree subagentsParallel agents in isolated git worktrees.
  • Rendered docs siteGetting-started, changelog, this page — all properly typeset.
Why Open Beta
A holding pattern, not a fortress.
The open-beta period exists so the core architecture can stabilize, the security model can be audited, and the visual identity can be protected from a flood of half-baked forks before there's anything worth forking. Source code stays private until beta testers have poked holes in the binary. When the source opens — and it will — this license dissolves into Apache-2.0 or MIT.
Push loudly to open it faster. The earlier you push, the sooner it ships.
license schedule
2026-04-11   open beta
             all rights reserved
             every binary expires in 24h
             every fix is in the next build

2026-Q3      source opens
             Apache-2.0 (target)
             beta testers credited
             scars + commit history go public

forever      she was right.
              nobody listened.
Suggestions
The feedback loop matters more than the user count.
If you have a suggestion, a bug report, a use case we haven't thought of, or just want to tell us the title screen looks weird on your terminal emulator — email jake@cass.tools with the subject SUGGESTION.
Every email gets read. The good ideas ship. The surprising ones get saved to the scar file.
jake@cass.tools
From:    beta tester #4
To:      jake@cass.tools
Subject: SUGGESTION

the title svg wraps weird in
tmux on alpine when the
terminal is <80 cols. happy
to test fixes if you have a
build with the renderer
patched.

──────────────────────────
 read by jake     2 min later
 scar logged     narrow-tmux-svg-wrap
 fix in v0.1.18  26 hours later
 tester credited in CHANGELOG
For Anthropic
Talk to my agent.
If you're at Anthropic and want to talk shop — about Cassandra, about Claude, about the constitutional-arbiter problem, about anything — send a note from your @anthropic.com email to jake@cass.tools. We check the sender header when we reply; verified Anthropic mail skips the cold-outreach queue and gets a direct response. Not at Anthropic? Same address, no filter.
No intermediaries. No recruiter filter. No "we'll get back to you."
inbound mail · header check
From:     amanda@anthropic.com
To:       jake@cass.tools
Subject:  re: cassandra

── header check ──────────
   SPF           pass
   DKIM          pass
   DMARC         pass
   From domain   anthropic.com
   Return-Path   anthropic.com
──────────────────────────

 verified inbound
 routed: priority queue
 direct reply, no recruiter
 response time SLA: 24h

One curl command. Any Linux box. Any libc vintage.

curl -fsSL https://cass.tools/install | bash

Click to copy  ·  full getting-started guide →  ·  read the license first