---
title: "npx claude-view Just Works"
description: "v0.16.0 bakes prod URLs into the distributed binary so sharing and auth work out of the box — while self-hosted builds stay clean with no embedded config."
date: 2026-03-12
author: 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:

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

```rust
// 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

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