Rename project from claude-remote to clarc
Updated all references across documentation, config files, and source code.
This commit is contained in:
parent
97cc975d55
commit
2dfe420555
15 changed files with 48 additions and 48 deletions
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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"]
|
||||||
|
|
|
||||||
30
README.md
30
README.md
|
|
@ -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'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
2
bun.lock
2
bun.lock
|
|
@ -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",
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
8
justfile
8
justfile
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Shared types for claude-remote
|
// Shared types for clarc
|
||||||
|
|
||||||
// Database entities
|
// Database entities
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue