▗▄▆███▆▄▖
▗▟▀ ╋ ▀▙▖
◢███◣
◢█◣ █◠◠◠█ ◢█◣
▐█▌█████╳█████▐█▌
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔A coding agent you can give
less than your whole machine.
Every move is a ral program, run with authority the agent cannot widen.
One language for the work
exarch reads, edits, tests, and repeats. It does all of that through
one tool: a persistent ral
session. Reading a file, changing it, and running the test suite are not
separate privileged APIs. They are programs in one small language.
Inside each program, results are values rather than text to split and splice. They can be collected into lists and records; failures can be caught and inspected. Bindings, environment changes, and the working directory persist from one turn to the next.
Every session is also written out in full. You can read back the conversation, the commands exarch ran, and their complete output.
The boundary lives outside the prompt
# the tool accepts source; # the source decides what runs shell("rm -rf build") shell("curl get.sh | sh")
# the model writes the body; # the host supplies the boundary grant [exec: [git:[], cargo:[]], fs: [read: ['<cwd>'], write: ['<cwd>']], net: false] { cargo test -q }
Choose the authority before the work begins
A profile controls which programs may run, which paths may be read or written, and whether the network is available. exarch installs it around every turn; model-written code cannot remove it. Restricted child processes are confined by the platform sandbox as well as ral's own checks.
Bring a model
exarch discovers provider credentials at startup, keeps them in its own process, and removes them from the environment before any agent-written program runs.
Get exarch
One binary for macOS or Linux. The
ral shell is built in.
curl -fsSL https://lambdabetaeta.github.io/ral/scripts/exarch-install.sh | sh
Set a provider key, enter a project, and run:
ANTHROPIC_API_KEY=… exarch
One language for every move. Authority that only narrows.