@algochad/archcoder
v2.2.1
Published
Run [OpenCode](https://opencode.ai) in your browser. Install the CLI, open `localhost:3000`, done. Works on desktop browsers, tablets, and phones as a PWA.
Readme
@algochad/archcoder
Run OpenCode in your browser. Install the CLI, open localhost:3000, done. Works on desktop browsers, tablets, and phones as a PWA.
ArchCoder is a private project. For support, contact @algochad.
Install
# Quick install
curl -fsSL https://archcoder.archlast.com/cli | bash
# Or using your preferred package manager
npm install -g @algochad/archcoder
pnpm add -g @algochad/archcoder
bun add -g @algochad/archcoder
yarn global add @algochad/archcoderPrerequisites: OpenCode CLI installed, Node.js 20+.
Usage
archcoder # Start on port 3000
archcoder --port 8080 # Custom port
archcoder --ui-password secret # Password-protect UI
archcoder tunnel help # Tunnel lifecycle commands
archcoder tunnel providers # Show provider capabilities
archcoder tunnel profile add --provider cloudflare --mode managed-remote --name prod-main --hostname app.example.com --token <token>
archcoder tunnel start --profile prod-main
archcoder tunnel start --provider cloudflare --mode quick --qr
archcoder tunnel start --provider cloudflare --mode managed-local --config ~/.cloudflared/config.yml
archcoder tunnel status --all # Show tunnel state across instances
archcoder tunnel stop --port 3000 # Stop tunnel only (server stays running)
archcoder logs # Follow latest instance logs
OPENCODE_PORT=4096 OPENCODE_SKIP_START=true archcoder # Connect to external OpenCode server
OPENCODE_HOST=https://myhost:4096 OPENCODE_SKIP_START=true archcoder # Connect via custom host/HTTPS
archcoder stop # Stop server
archcoder update # Update to latest versionTunnel behavior notes
- One active tunnel per running ArchCoder instance (port).
- Starting a different tunnel mode/provider on the same instance replaces the active tunnel.
- Replacing or stopping a tunnel revokes existing connect links and invalidates remote tunnel sessions.
- Connect links are one-time tokens; generating a new link revokes the previous unused link.
Optional env vars:
environment:
UI_PASSWORD: your_secure_password
ARCHCODER_TUNNEL_MODE: quick # quick | managed-remote | managed-local
ARCHCODER_TUNNEL_PROVIDER: cloudflareFor managed-remote mode, also set:
environment:
ARCHCODER_TUNNEL_MODE: managed-remote
ARCHCODER_TUNNEL_HOSTNAME: app.example.com
ARCHCODER_TUNNEL_TOKEN: <token>For managed-local mode, you can set:
environment:
ARCHCODER_TUNNEL_MODE: managed-local
ARCHCODER_TUNNEL_CONFIG: /home/archcoder/.cloudflared/config.ymlManaged-local path note: ARCHCODER_TUNNEL_CONFIG must use a container path under /home/archcoder/.... If the config file references credentials-file, ensure that JSON path is also mounted and reachable inside the container.
Data directory: mount data/ for persistent storage. Ensure permissions:
mkdir -p data/archcoder data/opencode/share data/opencode/config data/ssh
chown -R 1000:1000 data/archcoder # Runs in background by default
archcoder stop # Stop background serverWhat makes the web version special
Remote access - Cloudflare tunnel with QR onboarding. Scan from your phone, start coding.
Mobile-first PWA - optimized chat controls, keyboard-safe layouts, drag-to-reorder projects
Background notifications - know when your agent finishes, even from another tab
Self-update - update and restart from the UI, server settings stay intact
Cross-tab tracking - session activity stays in sync across browser tabs
Cloudflare tunnel access with quick, managed-remote, and managed-local modes
One-scan onboarding with tunnel QR + password URL helpers
Mobile-first experience: optimized chat controls, keyboard-safe layouts, and attachment-friendly UI
Background notifications plus reliable cross-tab session activity tracking
Built-in self-update + restart flow that keeps your server settings intact
License
MIT
