Skip to content

npx claude-view Just Works

· claude-view team

There’s a tension in distributing a tool that has both local and cloud features. If you embed cloud URLs in the binary, self-hosters pick up config they didn’t ask for. If you don’t, npx users have to set env vars before anything cloud-related works.

v0.16.0 resolves this cleanly.

Two binaries, one codebase

The distributed binary — the one you get via npx claude-view@latest or the install script — now has Supabase and relay URLs baked in at CI build time. Sharing works. Auth works. No configuration required.

The source build — cargo build from the repo — produces a binary with none of those URLs embedded. It’s a clean slate. Cloud features activate only when you explicitly set the env vars:

Terminal window
export SUPABASE_URL=...
export SHARE_WORKER_URL=...
export SHARE_VIEWER_URL=...
cargo run --release

Same source. Different build contexts. The right defaults for each audience.

How it works

The CI workflow injects the prod URLs as environment variables during the release build. Rust’s env!() macro embeds them at compile time — they’re baked into the binary, not loaded at runtime. No .env files, no dynamic resolution, no failure modes.

// In the binary: resolved at compile time
const SHARE_WORKER_URL: &str = env!("SHARE_WORKER_URL");

When the same code is built locally without those vars set, the env!() macro falls back to an empty string, and the server disables the feature. The GET /api/config endpoint tells the frontend which features are available, so the UI adapts automatically.

Self-hosting is a first-class path

This change came from a real gap: the README didn’t explain the distribution model clearly. Someone building from source would see sharing UI but get errors because the backend URLs weren’t set — and have no idea why.

The README now has an explicit self-hosting section. It explains which env vars activate which features, what works with zero config (everything local), and what requires cloud setup (sharing, auth).

If you’re running claude-view on your own machine with your own data, cargo build && ./target/release/claude-view gives you the full local experience — history browser, search, live monitor, analytics — with no cloud dependencies at all.

Update now

Terminal window
npx claude-view@latest

If you’re an npx user, sharing and auth now work without any setup. If you’re self-hosting, the README has the full picture.