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
# Root db (legacy, use data/ dirs instead)
/claude-remote.db
/claude-remote.db-shm
/claude-remote.db-wal
/clarc.db
/clarc.db-shm
/clarc.db-wal
# Data directories
data/dev/*.db
@ -48,4 +48,4 @@ data/prod/*.db-wal
# Finder (MacOS) folder config
.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.

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)
# 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
handle @tailscale {
reverse_proxy localhost:7200
@ -14,7 +14,7 @@ claude-remote.yourdomain.com {
# Option 2: Basic auth (if you need public access)
# Generate hash with: caddy hash-password
# claude-remote.yourdomain.com {
# clarc.yourdomain.com {
# basicauth {
# user $2a$14$your_hashed_password_here
# }
@ -23,7 +23,7 @@ claude-remote.yourdomain.com {
# Option 3: Both (belt and suspenders)
# claude-remote.yourdomain.com {
# clarc.yourdomain.com {
# @tailscale remote_ip 100.64.0.0/10
# handle @tailscale {
# basicauth {

View file

@ -12,7 +12,7 @@ COPY . .
# Build CLI binary (smallest possible)
RUN mkdir -p dist/bin && \
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
FROM oven/bun:1-slim
@ -25,13 +25,13 @@ COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./
# 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
RUN mkdir -p data/prod
ENV PORT=7200
ENV DB_PATH=/app/data/prod/claude-remote.db
ENV DB_PATH=/app/data/prod/clarc.db
EXPOSE 7200
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.
@ -12,16 +12,16 @@ just dev
just seed dev "My Phone"
# 3. build the binary + symlink to ~/bin
bun build --compile src/cli.ts --outfile claude-remote
ln -sf $(pwd)/claude-remote ~/bin/claude-remote
bun build --compile src/cli.ts --outfile clarc
ln -sf $(pwd)/clarc ~/bin/clarc
# 4. set your secret
export CLAUDE_REMOTE_SECRET=dev # add to .bashrc/.zshrc
# 5. use it like claude
claude-remote
claude-remote -r
claude-remote --dangerously-skip-permissions
clarc
clarc -r
clarc --dangerously-skip-permissions
# 6. open browser/phone
open http://localhost:7200
@ -53,13 +53,13 @@ Default if you just run `just seed`:
### 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
claude-remote # interactive
claude-remote -r # resume
claude-remote --help # shows help
claude-remote -p "explain this" # print mode
clarc # interactive
clarc -r # resume
clarc --help # shows help
clarc -p "explain this" # print mode
```
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:
```bash
claude-remote --secret other-device --server ws://remote:7200/ws
clarc --secret other-device --server ws://remote:7200/ws
```
### shell aliases
```bash
alias cr='claude-remote'
alias crr='claude-remote -r'
alias crd='claude-remote --dangerously-skip-permissions'
alias cr='clarc'
alias crr='clarc -r'
alias crd='clarc --dangerously-skip-permissions'
alias crdr='crd -r'
```

View file

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

View file

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

View file

@ -6,7 +6,7 @@ Overview
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
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
2. ANSI color parsing in output
@ -14,7 +14,7 @@ critical gaps between claude-remote and the crabigator reference implementation:
4. Git status widget
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)
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
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
- 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)
Implementation:
- Store preferences in localStorage (key: claude-remote-prefs)
- Store preferences in localStorage (key: clarc-prefs)
- Apply via CSS classes on container element
- Layout: data-layout="1" | "2" | "3" | "fit"
- 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.
@ -15,12 +15,12 @@ wrap claude cli in PTY, stream output to server, approve prompts from phone.
## project location
`/home/jtm/projects/agentry/repos/claude-remote/`
`/home/jtm/projects/agentry/repos/clarc/`
## structure
```
claude-remote/
clarc/
├── src/
│ ├── cli.ts # PTY wrapper, connects to server
│ ├── 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:
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-bundle:
mkdir -p dist/bin
bun build --minify --target bun src/cli.ts --outfile dist/bin/claude-remote.js
chmod +x dist/bin/claude-remote.js
bun build --minify --target bun src/cli.ts --outfile dist/bin/clarc.js
chmod +x dist/bin/clarc.js
# Docker build
build-image:
docker build -t claude-remote .
docker build -t clarc .
up:
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",
"module": "src/server.ts",
"type": "module",

View file

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>claude-remote</title>
<title>clarc</title>
<style>
:root {
--columns: 1;
@ -869,7 +869,7 @@
</head>
<body>
<header>
<h1>claude-remote</h1>
<h1>clarc</h1>
<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">
<span id="sessions-count-text">0 sessions</span>
@ -1833,7 +1833,7 @@
function loadSettings() {
try {
const saved = localStorage.getItem('claude-remote-prefs');
const saved = localStorage.getItem('clarc-prefs');
if (saved) {
const parsed = JSON.parse(saved);
state.settings = { ...state.settings, ...parsed };
@ -1845,7 +1845,7 @@
function saveSettings() {
try {
localStorage.setItem('claude-remote-prefs', JSON.stringify(state.settings));
localStorage.setItem('clarc-prefs', JSON.stringify(state.settings));
} catch (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)
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");
process.exit(1);
}

View file

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

View file

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