Rename project from claude-remote to clarc

Updated all references across documentation, config files, and source code.
This commit is contained in:
Jared Miller 2026-01-30 08:32:34 -05:00
parent 97cc975d55
commit 2dfe420555
Signed by: shmup
GPG key ID: 22B5C6D66A38B06C
15 changed files with 48 additions and 48 deletions

8
.gitignore vendored
View file

@ -29,9 +29,9 @@ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
# SQLite databases # SQLite databases
# Root db (legacy, use data/ dirs instead) # Root db (legacy, use data/ dirs instead)
/claude-remote.db /clarc.db
/claude-remote.db-shm /clarc.db-shm
/claude-remote.db-wal /clarc.db-wal
# Data directories # Data directories
data/dev/*.db data/dev/*.db
@ -48,4 +48,4 @@ data/prod/*.db-wal
# Finder (MacOS) folder config # Finder (MacOS) folder config
.DS_Store .DS_Store
claude-remote clarc

View file

@ -1,4 +1,4 @@
# claude-remote # clarc
Self-hosted remote control for Claude Code. Wrap CLI in PTY, stream output to server, approve prompts from phone. Self-hosted remote control for Claude Code. Wrap CLI in PTY, stream output to server, approve prompts from phone.

View file

@ -1,9 +1,9 @@
# Caddyfile.example - reverse proxy for claude-remote # Caddyfile.example - reverse proxy for clarc
# #
# Option 1: Tailscale IP restriction (recommended) # Option 1: Tailscale IP restriction (recommended)
# Only allows connections from Tailscale network (100.64.0.0/10) # Only allows connections from Tailscale network (100.64.0.0/10)
claude-remote.yourdomain.com { clarc.yourdomain.com {
@tailscale remote_ip 100.64.0.0/10 @tailscale remote_ip 100.64.0.0/10
handle @tailscale { handle @tailscale {
reverse_proxy localhost:7200 reverse_proxy localhost:7200
@ -14,7 +14,7 @@ claude-remote.yourdomain.com {
# Option 2: Basic auth (if you need public access) # Option 2: Basic auth (if you need public access)
# Generate hash with: caddy hash-password # Generate hash with: caddy hash-password
# claude-remote.yourdomain.com { # clarc.yourdomain.com {
# basicauth { # basicauth {
# user $2a$14$your_hashed_password_here # user $2a$14$your_hashed_password_here
# } # }
@ -23,7 +23,7 @@ claude-remote.yourdomain.com {
# Option 3: Both (belt and suspenders) # Option 3: Both (belt and suspenders)
# claude-remote.yourdomain.com { # clarc.yourdomain.com {
# @tailscale remote_ip 100.64.0.0/10 # @tailscale remote_ip 100.64.0.0/10
# handle @tailscale { # handle @tailscale {
# basicauth { # basicauth {

View file

@ -12,7 +12,7 @@ COPY . .
# Build CLI binary (smallest possible) # Build CLI binary (smallest possible)
RUN mkdir -p dist/bin && \ RUN mkdir -p dist/bin && \
bun build --compile --minify --sourcemap=none --target=bun-linux-x64 \ bun build --compile --minify --sourcemap=none --target=bun-linux-x64 \
src/cli.ts --outfile dist/bin/claude-remote src/cli.ts --outfile dist/bin/clarc
# Runtime stage - for running the server # Runtime stage - for running the server
FROM oven/bun:1-slim FROM oven/bun:1-slim
@ -25,13 +25,13 @@ COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./ COPY --from=builder /app/package.json ./
# Copy CLI binary for extraction if needed # Copy CLI binary for extraction if needed
COPY --from=builder /app/dist/bin/claude-remote /app/dist/bin/ COPY --from=builder /app/dist/bin/clarc /app/dist/bin/
# Create data directory # Create data directory
RUN mkdir -p data/prod RUN mkdir -p data/prod
ENV PORT=7200 ENV PORT=7200
ENV DB_PATH=/app/data/prod/claude-remote.db ENV DB_PATH=/app/data/prod/clarc.db
EXPOSE 7200 EXPOSE 7200
CMD ["bun", "run", "src/server.ts"] CMD ["bun", "run", "src/server.ts"]

View file

@ -1,4 +1,4 @@
# claude-remote # clarc
Self-hosted remote control for Claude Code. Wraps CLI in PTY, streams output to server, approve prompts from phone. Self-hosted remote control for Claude Code. Wraps CLI in PTY, streams output to server, approve prompts from phone.
@ -12,16 +12,16 @@ just dev
just seed dev "My Phone" just seed dev "My Phone"
# 3. build the binary + symlink to ~/bin # 3. build the binary + symlink to ~/bin
bun build --compile src/cli.ts --outfile claude-remote bun build --compile src/cli.ts --outfile clarc
ln -sf $(pwd)/claude-remote ~/bin/claude-remote ln -sf $(pwd)/clarc ~/bin/clarc
# 4. set your secret # 4. set your secret
export CLAUDE_REMOTE_SECRET=dev # add to .bashrc/.zshrc export CLAUDE_REMOTE_SECRET=dev # add to .bashrc/.zshrc
# 5. use it like claude # 5. use it like claude
claude-remote clarc
claude-remote -r clarc -r
claude-remote --dangerously-skip-permissions clarc --dangerously-skip-permissions
# 6. open browser/phone # 6. open browser/phone
open http://localhost:7200 open http://localhost:7200
@ -53,13 +53,13 @@ Default if you just run `just seed`:
### run claude ### run claude
With the binary installed and `CLAUDE_REMOTE_SECRET` set, just use `claude-remote` like `claude`: With the binary installed and `CLAUDE_REMOTE_SECRET` set, just use `clarc` like `claude`:
```bash ```bash
claude-remote # interactive clarc # interactive
claude-remote -r # resume clarc -r # resume
claude-remote --help # shows help clarc --help # shows help
claude-remote -p "explain this" # print mode clarc -p "explain this" # print mode
``` ```
All arguments pass through to claude. All arguments pass through to claude.
@ -76,15 +76,15 @@ export CLAUDE_REMOTE_SERVER=ws://localhost:7200/ws # optional, this is the defau
Or use flags to override: Or use flags to override:
```bash ```bash
claude-remote --secret other-device --server ws://remote:7200/ws clarc --secret other-device --server ws://remote:7200/ws
``` ```
### shell aliases ### shell aliases
```bash ```bash
alias cr='claude-remote' alias cr='clarc'
alias crr='claude-remote -r' alias crr='clarc -r'
alias crd='claude-remote --dangerously-skip-permissions' alias crd='clarc --dangerously-skip-permissions'
alias crdr='crd -r' alias crdr='crd -r'
``` ```

View file

@ -3,7 +3,7 @@
"configVersion": 1, "configVersion": 1,
"workspaces": { "workspaces": {
"": { "": {
"name": "claude-remote", "name": "clarc",
"dependencies": { "dependencies": {
"bun-pty": "^0.4.8", "bun-pty": "^0.4.8",
}, },

View file

@ -7,7 +7,7 @@ services:
- ./data/prod:/app/data/prod - ./data/prod:/app/data/prod
environment: environment:
- PORT=7200 - PORT=7200
- DB_PATH=/app/data/prod/claude-remote.db - DB_PATH=/app/data/prod/clarc.db
- CLAUDE_REMOTE_SECRET - CLAUDE_REMOTE_SECRET
- CLAUDE_REMOTE_DEVICE_NAME - CLAUDE_REMOTE_DEVICE_NAME
restart: unless-stopped restart: unless-stopped

View file

@ -6,7 +6,7 @@ Overview
Phase 1 delivered basic remote control: Claude Code session wrapping, SSE streaming Phase 1 delivered basic remote control: Claude Code session wrapping, SSE streaming
to mobile dashboard, binary prompt approval (y/n only). Phase 2 addresses the most to mobile dashboard, binary prompt approval (y/n only). Phase 2 addresses the most
critical gaps between claude-remote and the crabigator reference implementation: critical gaps between clarc and the crabigator reference implementation:
1. Rich prompt system - multi-option choices, text input, tab instructions 1. Rich prompt system - multi-option choices, text input, tab instructions
2. ANSI color parsing in output 2. ANSI color parsing in output
@ -14,7 +14,7 @@ critical gaps between claude-remote and the crabigator reference implementation:
4. Git status widget 4. Git status widget
5. UI polish - style controls, filtering, auto-scroll 5. UI polish - style controls, filtering, auto-scroll
This phase transforms claude-remote from a proof-of-concept into a genuinely useful This phase transforms clarc from a proof-of-concept into a genuinely useful
remote approval tool. Priority is on prompt system (the blocker for real usage) remote approval tool. Priority is on prompt system (the blocker for real usage)
followed by output quality and UX improvements. followed by output quality and UX improvements.
@ -280,7 +280,7 @@ Git Status Extraction
---------------------- ----------------------
Git status widget shows current branch and file changes. Crabigator extracts this Git status widget shows current branch and file changes. Crabigator extracts this
by parsing git status output in the PTY stream. For claude-remote, two approaches: by parsing git status output in the PTY stream. For clarc, two approaches:
Approach A (simple): Git hook in Claude Code Approach A (simple): Git hook in Claude Code
- Claude Code has git hooks that emit structured git events - Claude Code has git hooks that emit structured git events
@ -369,7 +369,7 @@ Medium priority:
- Grouping: all sessions vs. by project (group by cwd) - Grouping: all sessions vs. by project (group by cwd)
Implementation: Implementation:
- Store preferences in localStorage (key: claude-remote-prefs) - Store preferences in localStorage (key: clarc-prefs)
- Apply via CSS classes on container element - Apply via CSS classes on container element
- Layout: data-layout="1" | "2" | "3" | "fit" - Layout: data-layout="1" | "2" | "3" | "fit"
- Font size: CSS variable --font-scale - Font size: CSS variable --font-scale

View file

@ -1,4 +1,4 @@
# claude-remote # clarc
self-hosted remote control for claude code, pure bun stack. self-hosted remote control for claude code, pure bun stack.
@ -15,12 +15,12 @@ wrap claude cli in PTY, stream output to server, approve prompts from phone.
## project location ## project location
`/home/jtm/projects/agentry/repos/claude-remote/` `/home/jtm/projects/agentry/repos/clarc/`
## structure ## structure
``` ```
claude-remote/ clarc/
├── src/ ├── src/
│ ├── cli.ts # PTY wrapper, connects to server │ ├── cli.ts # PTY wrapper, connects to server
│ ├── server.ts # HTTP + WebSocket + SSE │ ├── server.ts # HTTP + WebSocket + SSE

View file

@ -23,17 +23,17 @@ build: build-cli build-bundle
# Build CLI binary (standalone, ~100MB, no deps) # Build CLI binary (standalone, ~100MB, no deps)
build-cli: build-cli:
mkdir -p dist/bin mkdir -p dist/bin
bun build --compile --minify --sourcemap=none src/cli.ts --outfile dist/bin/claude-remote bun build --compile --minify --sourcemap=none src/cli.ts --outfile dist/bin/clarc
# Build CLI bundle (small, requires bun installed) # Build CLI bundle (small, requires bun installed)
build-bundle: build-bundle:
mkdir -p dist/bin mkdir -p dist/bin
bun build --minify --target bun src/cli.ts --outfile dist/bin/claude-remote.js bun build --minify --target bun src/cli.ts --outfile dist/bin/clarc.js
chmod +x dist/bin/claude-remote.js chmod +x dist/bin/clarc.js
# Docker build # Docker build
build-image: build-image:
docker build -t claude-remote . docker build -t clarc .
up: up:
docker compose up -d docker compose up -d

View file

@ -1,5 +1,5 @@
{ {
"name": "claude-remote", "name": "clarc",
"description": "Self-hosted remote control for Claude Code - wrap CLI in PTY, stream output, approve prompts from phone", "description": "Self-hosted remote control for Claude Code - wrap CLI in PTY, stream output, approve prompts from phone",
"module": "src/server.ts", "module": "src/server.ts",
"type": "module", "type": "module",

View file

@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>claude-remote</title> <title>clarc</title>
<style> <style>
:root { :root {
--columns: 1; --columns: 1;
@ -869,7 +869,7 @@
</head> </head>
<body> <body>
<header> <header>
<h1>claude-remote</h1> <h1>clarc</h1>
<div style="display: flex; align-items: center; gap: 16px;"> <div style="display: flex; align-items: center; gap: 16px;">
<button class="settings-btn header-text-btn" id="sessions-filter-btn" onclick="openSessionFilter()" title="Session Filter"> <button class="settings-btn header-text-btn" id="sessions-filter-btn" onclick="openSessionFilter()" title="Session Filter">
<span id="sessions-count-text">0 sessions</span> <span id="sessions-count-text">0 sessions</span>
@ -1833,7 +1833,7 @@
function loadSettings() { function loadSettings() {
try { try {
const saved = localStorage.getItem('claude-remote-prefs'); const saved = localStorage.getItem('clarc-prefs');
if (saved) { if (saved) {
const parsed = JSON.parse(saved); const parsed = JSON.parse(saved);
state.settings = { ...state.settings, ...parsed }; state.settings = { ...state.settings, ...parsed };
@ -1845,7 +1845,7 @@
function saveSettings() { function saveSettings() {
try { try {
localStorage.setItem('claude-remote-prefs', JSON.stringify(state.settings)); localStorage.setItem('clarc-prefs', JSON.stringify(state.settings));
} catch (e) { } catch (e) {
console.error('Failed to save settings:', e); console.error('Failed to save settings:', e);
} }

View file

@ -4,7 +4,7 @@
// Check for Bun runtime (only fails when running bundled .js with Node) // Check for Bun runtime (only fails when running bundled .js with Node)
if (typeof Bun === "undefined") { if (typeof Bun === "undefined") {
console.error("claude-remote requires Bun to run."); console.error("clarc requires Bun to run.");
console.error("Install Bun: https://bun.sh"); console.error("Install Bun: https://bun.sh");
process.exit(1); process.exit(1);
} }

View file

@ -67,7 +67,7 @@ function runMigrations(): void {
} }
export function initDb( export function initDb(
path = process.env.DB_PATH || "data/dev/claude-remote.db", path = process.env.DB_PATH || "data/dev/clarc.db",
): Database { ): Database {
db = new Database(path); db = new Database(path);

View file

@ -1,4 +1,4 @@
// Shared types for claude-remote // Shared types for clarc
// Database entities // Database entities