rch — Remote Compilation Helper
|
Transparent remote compilation for multi-agent development
TL;DR
Problem: Many concurrent AI agents can saturate local CPU and make your workstation unusable.
Solution: RCH runs as a Claude Code PreToolUse hook, classifies build-like commands in milliseconds, executes them on remote workers, and returns artifacts/output as if they ran locally.
Design constraint: RCH is fail-open. If remote execution is not safe/possible, commands run locally.
What RCH Intercepts
RCH currently recognizes and can offload:
| Ecosystem | Intercepted Commands |
|---|---|
| Rust | cargo build, cargo check, cargo clippy, cargo doc, cargo test, cargo nextest run, cargo bench, rustc |
| Bun/TypeScript | bun test, bun typecheck |
| C/C++ | gcc, g++, clang, clang++ |
| Build Systems | make, cmake --build, ninja, meson compile |
RCH explicitly does not intercept local-mutating or interactive patterns (examples):
- Package management:
cargo install,cargo clean,bun install,bun add,bun remove - Bun runners/dev:
bun run,bun build,bun dev,bun x/bunx - Watch/background/piped/redirected commands where deterministic offload is unsafe
Why It Works Well
- Transparent hook behavior: agents see normal command semantics.
- 5-tier classification pipeline optimized for very fast non-compilation rejection.
- Daemon-owned worker state and slot accounting.
- Cache-aware worker selection and project affinity.
- Queue + cancellation primitives for overloaded scenarios.
- Deterministic reliability subsystems for convergence, pressure handling, and remediation.
- Unified status surface with posture and remediation hints.
Current Architecture
Agent Shell / Claude Code
|
v
PreToolUse Hook -> rch (classifier + hook protocol)
|
v
rchd (daemon)
- worker selection
- queueing and cancellation metadata
- health, alerts, telemetry, history
- reliability subsystems (convergence, pressure, triage)
|
v
Remote workers (rch-wkr)
- execute build/test commands
- manage worker cache
- report capabilities/health/telemetry
Workspace crates:
rch/: Hook + primary CLIrchd/: Local daemon + scheduling/reliability APIsrch-wkr/: Worker execution/caching agentrch-common/: Shared protocol/types/patterns/UI foundationsrch-telemetry/: Telemetry collection/storage integration
Reliability Model (Operational)
RCH now includes a deterministic reliability stack for multi-repo and multi-worker stability:
- Path-dependency closure planning: builds can include required repository closure rather than a single root.
- Canonical topology enforcement: worker/project roots are normalized around
/data/projectsand/dpconventions. - Repo convergence service: tracks worker drift vs required repos and can repair drift.
- Disk pressure resilience: pressure scoring, admission control, safe reclaim with active-build protection.
- Process triage/remediation: bounded TERM/KILL escalation with audit trail.
- Cancellation orchestration: deterministic cancellation metadata and worker health integration.
- Unified posture/reporting: status output includes posture, convergence state, pressure, and actionable remediation hints.
Installation
Recommended: Installer
|
From Source
Source Build Note
This workspace currently uses FrankenTUI path dependencies (ftui-*) from /dp/frankentui/crates/... in Cargo.toml. Ensure that dependency tree is available when building from source in this environment.
First-Time Setup
Fastest Path
rch init can guide:
- Worker discovery from SSH config/aliases
- Worker probing and selection
rch-wkrdeployment- Toolchain synchronization
- Daemon startup
- Hook installation
- Validation build
Manual Path
# 1) configure workers
# 2) start daemon
# 3) verify workers
# 4) install hook
# 5) check posture
Command Surface
Global flags:
|
||
Core Operations
|||||
||||||
|
Hook + Agent Integration
|||
|||
Config + Diagnostics
||||||||||
Fleet + Release + UX
|||||
|
|
|||
Agent Discovery Surface
For AI agents and automation, start with:
--json uses the standard API envelope for command output; --format toon
emits the same data as TOON. The legacy rch --capabilities flag remains a
raw JSON shortcut for lightweight discovery.
Configuration
Primary files:
- User config:
~/.config/rch/config.toml - Worker list:
~/.config/rch/workers.toml - Project override:
.rch/config.toml - Optional project excludes:
.rchignore
Precedence (highest first):
- CLI flags
- Environment variables
- Profile defaults
.env/.rch.env- Project config
- User config
- Built-in defaults
Minimal Example
[]
= true
= false
= false
= "~/.cache/rch/rch.sock"
= "info"
[]
= 0.85
= 2000
= 1.2
= 4
= 8
= 2
= 300
= 1800
= 600
= true
[]
= 3
= "/tmp/rch"
= true
= false
= 2048
[]
= "balanced"
[]
= true
= true
[]
= true
= 300
Built-in worker selection defaults to balanced, which blends speed, load,
health, and cache affinity. Use priority only when you want explicit
worker-priority control, and fair_fastest when you want extra load spreading.
Worker Config Example
[[]]
= "css"
= "203.0.113.20"
= "ubuntu"
= "~/.ssh/id_rsa"
= 32
= 100
= ["fast", "ssd"]
Output Modes
RCH auto-selects output mode by context:
hook: strict JSON for hook protocolmachine: explicit machine output (--json,--format)interactive: rich terminal renderingcolored: ANSI-only when forced without TTYplain: text fallback
Environment controls:
RCH_JSON=1,RCH_HOOK_MODE=1NO_COLOR=1,FORCE_COLOR=1,FORCE_COLOR=0RCH_OUTPUT_FORMAT=json|toon,TOON_DEFAULT_FORMAT
JSON responses use a stable envelope (api_version, timestamp, success, data, error).
Monitoring and Observability
RCH exposes observability through daemon APIs and metrics:
- daemon health/readiness endpoints
- Prometheus metrics collection
- OpenTelemetry tracing integration
- telemetry-backed worker SpeedScore history
- queue/build history, active alerts, cancellation metadata in status APIs
Quick checks:
Testing and Validation
Workspace checks:
Reliability and E2E suites are provided under:
tests/tests/e2e/rch-common/tests/(contract/reliability/perf suites)
If you are running CPU-intensive validation manually and want explicit offload:
Security Model
- Transport uses SSH.
- Worker commands are constrained to classified execution paths.
- Sensitive field masking and structured error taxonomy are built in.
- Sigstore/checksum verification is part of update/release flows.
- Hook path remains fail-open to avoid deadlocks/stalls.
Operational recommendations:
- Use workers you control.
- Use dedicated SSH keys for worker access.
- Keep workers patched and isolated.
- Enable telemetry/alerting for production-like use.
Limitations
- Designed around SSH-based Linux worker environments.
- Tooling assumptions are strongest for Rust and selected build/test commands.
- Remote performance gains depend on network + worker capacity + project shape.
- Web dashboard workflows require the
/webstack and its runtime dependencies.
FAQ
Does RCH block my command if the daemon/workers fail?
No. It fails open and allows local execution.
Can I force local or force remote per project?
Yes, via .rch/config.toml (general.force_local / general.force_remote).
Is queue/cancel supported?
Yes. Use rch queue and rch cancel.
Can I inspect why a command is or is not intercepted?
Yes. Use rch diagnose "<command>".
About Contributions
Please don't take this the wrong way, but I do not accept outside contributions for my projects. You can still open issues and PRs for discussion/proof-of-fix, but I review and re-implement changes independently.
License
MIT License. See LICENSE.