open source · self-hosted · PWA

A web UI for Claude Code, on your own VM

spannora is a self-hosted web chat for Claude Code. Run it on a Linux VM with one curl command, then drive Claude from any browser or phone — with the full agent toolset, persistent sessions, and HTTPS out of the box.

curl -fsSL https://spannora.dev/install.sh | bash

Runs on any Linux VM with port 80/443 open. Auto-provisions HTTPS via Let's Encrypt.

Why a web UI for Claude Code?

Claude Code is great in your terminal. But terminals don't follow you to your phone, don't survive a laptop closing, and don't let you check on a long-running agent from the couch. spannora puts the same Claude — same tools, same auth, same prompt — behind a browser tab on whatever device is in your hand.

Built for mobile

Install as a PWA on Android or iOS. Drive Claude Code from a phone with safe-area-aware UX, persistent sessions, and a real keyboard-friendly chat input.

Multi-VM hub

The standalone hub manages many spannora installs from one screen. Switch between dev, staging, and sandbox machines with one tap. Bearer-token auth across origins.

Full tool support

Bash, Edit, Write, AskUserQuestion — every Claude Code tool works. SSE streaming, mid-stream interrupt, conversation resume, context-fill matching the official status line.

One command to install

Point your terminal at a fresh Linux VM and run:

curl -fsSL https://spannora.dev/install.sh | bash

The installer detects existing reverse proxies (Caddy, nginx) or installs Caddy fresh, provisions a Let's Encrypt certificate on an sslip.io hostname by default, and starts a systemd service. First boot prints a one-time setup token. Visit https://<your-vm>/setup, paste it, and you're chatting.

Full install guide →

Your VM, your auth, your data

spannora ships with bcrypt password auth, HttpOnly cookie sessions, optional long-lived bearer tokens for cross-origin hub access, and a setup token printed once on first boot. All conversations live in SQLite + JSONL on your disk. Nothing leaves your server except calls to the Claude API.

Read the security model →

Frequently asked questions

What is spannora?

spannora is a self-hosted web UI for Claude Code. You run it on a Linux VM, and it gives you a browser-based chat that drives Claude with the full toolset — Bash, Edit, Write, the lot. It's the same Claude you'd use in the CLI, reachable from any device.

How is this different from the Claude Code CLI?

The CLI lives in your terminal. spannora is a thin server that wraps the Claude Agent SDK and exposes it as a web app. Same underlying Claude, same tools, same auth — different UI surface. Run Claude on a remote VM and you can still kick off tasks from your phone or any browser.

Can I use spannora on my phone?

Yes. spannora is a PWA — open it in mobile Safari or Chrome, tap "Add to Home Screen," and it installs like a native app. The UI is designed mobile-first: safe-area insets for the iOS notch, dynamic viewport height that handles Android keyboards correctly, and a chat input that stays in reach while Claude streams.

Is self-hosted Claude Code secure?

spannora ships with bcrypt password auth, HttpOnly cookie sessions, optional long-lived bearer tokens for cross-origin clients, and a one-time setup token on first boot. The one-line installer provisions HTTPS via Let's Encrypt automatically (Caddy or nginx + certbot). The web UI is treated like a root shell because that's exactly what it is — Claude needs filesystem access on the VM to actually do work. Lock down the auth gate, don't expose it without HTTPS.

How much does spannora cost?

spannora itself is free and open source (MIT). You'll pay Anthropic for Claude usage — either through a Claude Code subscription or pay-as-you-go API. spannora uses the same auth as the Claude Code CLI, so if you've already paid for Claude Code, no extra cost.

Can I run multiple spannora instances?

Yes. Each VM runs its own spannora. The hub at spannora.dev/app/ is a static PWA that connects to many installs simultaneously and lets you switch between them with one tap. Or self-host the hub if you prefer — it's just static files in the same repo.

Does spannora work on Windows?

The server is Linux-only by design — it expects systemd, a real filesystem, and runs as root so Claude's tool calls can do useful work. The frontend (browser + PWA) works on any OS, naturally. Windows isn't supported as a dev platform either; macOS and Linux only.