A coding agent built around a persistent Clojure REPL. Self-contained macOS and Linux binaries.
Clojure
10
54 commits
updated Oct 5, 2026
Arrodes is a terminal coding agent built around a persistent Clojure REPL. The agent composes ordinary functions and retains native values between steps, while your conversation, results, and project configuration stay outside the repository.
Arrodes is open source under the MIT license. It runs trusted local code with your permissions; it is not a sandbox. See the security policy.
Install the latest release on macOS or glibc-based Linux:
curl -fsSL https://raw.githubusercontent.com/DeadMeme5441/arrodes/main/install.sh | sh
The installer detects your OS and architecture, verifies the SHA-256 checksum, and installs to ~/.local/bin/arrodes. No sudo, language runtimes, or package managers required.
If ~/.local/bin is not on your PATH, the installer prints the command to add it. Then run arrodes inside a project to begin setup.
Prefer to inspect scripts before running them? Read the installer, or use the manual downloads below.
arrodes update --check
arrodes update
arrodes update --version 0.1.7
The packaged executable checks published stable releases, verifies the selected asset against its SHA-256 metadata and checksum file, and atomically replaces itself. Failed downloads leave the installed executable unchanged. Restart Arrodes afterward; the updater never opens or modifies your settings, credentials or sessions. Default updates never downgrade. Selecting an older version is explicit and does not roll back session data; check the format contract first. Source checkouts do not replace their Bun executable: update the checkout instead.
Download the executable for your system and its matching .sha256 file from Releases.
| System | Executable |
|---|---|
| macOS Apple silicon | arrodes-darwin-arm64 |
| macOS Intel | arrodes-darwin-x64 |
| Linux arm64, glibc | arrodes-linux-arm64 |
| Linux x64, glibc | arrodes-linux-x64 |
The executable is self-contained. End users do not need to install a language runtime or package manager.
Windows support is experimental and is not included in this release.
Verify before renaming or moving the file:
shasum -a 256 -c arrodes-darwin-arm64.sha256
chmod +x arrodes-darwin-arm64
mkdir -p ~/.local/bin
mv arrodes-darwin-arm64 ~/.local/bin/arrodes
Use the x64 filename on an Intel Mac. Ensure ~/.local/bin is on PATH.
The macOS binaries are not Developer ID signed or notarized. After verifying the checksum, the first launch may require System Settings → Privacy & Security → Open Anyway. Only approve an artifact obtained from the release you trust.
sha256sum -c arrodes-linux-x64.sha256
chmod +x arrodes-linux-x64
mkdir -p ~/.local/bin
mv arrodes-linux-x64 ~/.local/bin/arrodes
Use the arm64 filename on arm64. The preview targets glibc-based Linux systems.
Confirm the install:
arrodes --version
Open a repository and start Arrodes:
cd /path/to/project
arrodes
On first run, the Providers browser opens. Connect an account, browse its models, choose a supported reasoning level, and select Make default for new conversations. Arrodes then asks about project trust when needed and opens your first conversation. You can connect several accounts; signing in never changes an existing conversation's model.
Return with /providers (also /setup or /login). Connected providers appear first,
with their authentication method and connection status. Enter manages the selected
provider; F5 checks its status. Esc cancels an active sign-in or returns to chat.
/models opens the model browser: providers on the left, models on the right,
and details below. Tab switches between provider and model navigation, arrows select,
and typing filters models. Change provider also works in narrow terminals.
F5 discovers models from the selected provider. Enter chooses reasoning and then:
OAuth can open a browser or show a URL for manual completion. API keys and pasted authorization codes are masked and excluded from conversation drafts and history. Press Esc to cancel a setup screen without exiting; run /setup or /login later to continue.
Codex supports ChatGPT sign-in. Anthropic access uses a Console API key or a supported cloud provider; Claude.ai subscription OAuth is not supported. GitHub Copilot login is not included. Each provider's account terms and data practices apply.
Existing valid defaults skip setup. Launch selections take precedence for a new session:
arrodes --provider codex-backend --model MODEL_ID --thinking high
Use /models, /refresh-models, and /thinking to change the current session from the interface.
Launch in the repository you want Arrodes to work on, then describe the change or question in the composer. A one-line starting prompt can also be supplied at launch:
arrodes "Explain the failing command, fix the cause, and verify the result."
Arrodes keeps one live evaluator per session. Function calls appear compactly in the conversation; select a row to inspect its summary, output, native value, or evaluation source. Pending follow-ups can be edited or removed before delivery.
On feature/session-agents, the model can call agents/start! inside the same
persistent REPL to start an independently evaluated child session. Children and
their parent exchange addressed messages, inspect operation-specific outcomes,
and continue work without turning function jobs into agents. /agents opens a
team browser for navigation, messages, results and explicit cancel/stop/resume;
the ordinary composer retains its unsent text across navigation. Children share
the working checkout and process permissions, not the parent's live REPL
bindings. Foreground cancellation does not cancel accepted jobs or children.
See the agent/session contract. Current schema-6 stores reopen
directly; supported schema-3/4/5 layouts upgrade transactionally after a retained
backup. Unknown/newer, malformed and foreign stores are rejected intact, not reset.
See compatibility for supported layouts and recovery.
| Action | Key |
|---|---|
| Send while idle; steer while running | Enter |
| Insert a newline | Shift+Enter or Ctrl+J |
| Queue a follow-up | Ctrl+Q |
| Close a panel; otherwise request cancellation | Esc |
| Sessions | F2 |
| Commands | F3 or Ctrl+P |
| Agent roster (development branch) | F4 |
| Move to the next pane | F6 |
Compose a message in /agents (development branch) | F7 |
Inspect messages in /agents (development branch) | F8 |
| Attach a project file | @ |
| Discover commands | / |
| Scroll without following output | PgUp / PgDn |
| Inspect / expand a selected conversation row | Enter / Space |
| Follow the latest output | End |
| Inspector tabs | 1 Summary, 2 Output, 3 Value, 4 Code |
| Copy selected text; otherwise stop work | Ctrl+C |
| Exit | Ctrl+D |
| Command | Purpose |
|---|---|
/new | Create a session |
/sessions | Switch sessions |
/history | Inspect history and create a branch |
/refresh | Reconcile recorded session state without repeating a mutation |
/jobs | Inspect and cancel background function jobs; read output and native results |
/agents | Browse and control the agent team (development branch) |
/parent | Return from a child conversation (development branch) |
/pending | Edit or drop queued input |
/attach, /attachments | Add or remove project-file context |
/providers, /setup, /login | Manage provider connections and sign-in |
/models, /refresh-models, /thinking | Select or refresh model settings |
/rename | Rename the current session |
/continue | Continue from the current conversation |
/compact | Compact model context without deleting history |
/usage | Inspect measured cache tokens and active-path estimated spend |
/eval | Evaluate trusted Clojure input in the live session |
/reload | Reset the evaluator and reload resources; live definitions are lost |
/reconnect | Restart the owned core without repeating an interrupted mutation |
/copy | Copy the visible conversation |
/export | Write a local HTML export |
/reasoning | Show or hide reasoning |
/expand, /collapse | Expand or collapse recorded activity |
/delete | Permanently delete the current session after confirmation |
/help | Show keyboard help |
/quit | Exit Arrodes |
Prefix a message with // to send a literal leading slash.
Sessions are durable and can be reopened through /sessions or directly:
arrodes --session SESSION_ID
Conversation history, session configuration, stored artifacts, and supported retained values survive restart. Arbitrary live definitions, JVM objects, and live-only results do not. Branching changes conversation history; it does not undo edits, commands, or other filesystem effects. See Sessions and results.
For automation and integrations, the only headless terminal mode is:
arrodes --rpc
It serves the versioned JSON Lines API documented in the RPC protocol reference.
Application home resolves in this order: --home, ARRODES_HOME, then ~/.arrodes.
~/.arrodes/
config/
settings.edn
keybindings.edn
trust.edn
auth/
skills/
extensions/
prompts/
themes/
packages/
projects/
<readable-name>-<sha256-of-real-worktree-root>/
project.edn
settings.edn
data/
skills/ extensions/ prompts/ themes/ packages/
cache/
models/ jna/ bun/ opentui/
runtime/
<version>-<platform>-<arch>-<payload-digest>/
The project identity is the real Git worktree root, or the launch directory outside Git. Subdirectories and symlink aliases share a project bucket; separate worktrees do not. Arrodes does not create .arrodes, instructions, or ignore-file changes in the repository. Use project.info over RPC to discover the exact external directory.
Each project data store has one live owner. Different projects can run concurrently; a second process opening the same store is rejected. Use --data-dir only when deliberately selecting another store.
Trust allows project instructions and executable resources to load; it is not an operating-system sandbox. The evaluator, shell, MCP clients, and trusted extensions run with the Arrodes process's permissions. Credentials stay under auth/ or in referenced environment variables, not settings files.
Nothing is shared automatically. The RPC session.share method explicitly creates an unlisted GitHub gist; anyone with its URL can read it.
See Configuration and project state and Troubleshooting for current-format storage, ownership, and recovery details.
Start with the documentation map for product contracts, architecture, development, compatibility and releases. AGENTS.md routes coding agents to the project workflows.
MIT. Copyright 2026 DeadMeme5441.
Bundled third-party components retain their own licenses. Each release includes third-party notices and a corresponding-source companion with the applicable source code and rebuild instructions.
A coding agent built around a persistent Clojure REPL. Self-contained macOS and Linux binaries.
Clojure
10
54 commits
updated Oct 5, 2026
Arrodes is a terminal coding agent built around a persistent Clojure REPL. The agent composes ordinary functions and retains native values between steps, while your conversation, results, and project configuration stay outside the repository.
Arrodes is open source under the MIT license. It runs trusted local code with your permissions; it is not a sandbox. See the security policy.
Install the latest release on macOS or glibc-based Linux:
curl -fsSL https://raw.githubusercontent.com/DeadMeme5441/arrodes/main/install.sh | sh
The installer detects your OS and architecture, verifies the SHA-256 checksum, and installs to ~/.local/bin/arrodes. No sudo, language runtimes, or package managers required.
If ~/.local/bin is not on your PATH, the installer prints the command to add it. Then run arrodes inside a project to begin setup.
Prefer to inspect scripts before running them? Read the installer, or use the manual downloads below.
arrodes update --check
arrodes update
arrodes update --version 0.1.7
The packaged executable checks published stable releases, verifies the selected asset against its SHA-256 metadata and checksum file, and atomically replaces itself. Failed downloads leave the installed executable unchanged. Restart Arrodes afterward; the updater never opens or modifies your settings, credentials or sessions. Default updates never downgrade. Selecting an older version is explicit and does not roll back session data; check the format contract first. Source checkouts do not replace their Bun executable: update the checkout instead.
Download the executable for your system and its matching .sha256 file from Releases.
| System | Executable |
|---|---|
| macOS Apple silicon | arrodes-darwin-arm64 |
| macOS Intel | arrodes-darwin-x64 |
| Linux arm64, glibc | arrodes-linux-arm64 |
| Linux x64, glibc | arrodes-linux-x64 |
The executable is self-contained. End users do not need to install a language runtime or package manager.
Windows support is experimental and is not included in this release.
Verify before renaming or moving the file:
shasum -a 256 -c arrodes-darwin-arm64.sha256
chmod +x arrodes-darwin-arm64
mkdir -p ~/.local/bin
mv arrodes-darwin-arm64 ~/.local/bin/arrodes
Use the x64 filename on an Intel Mac. Ensure ~/.local/bin is on PATH.
The macOS binaries are not Developer ID signed or notarized. After verifying the checksum, the first launch may require System Settings → Privacy & Security → Open Anyway. Only approve an artifact obtained from the release you trust.
sha256sum -c arrodes-linux-x64.sha256
chmod +x arrodes-linux-x64
mkdir -p ~/.local/bin
mv arrodes-linux-x64 ~/.local/bin/arrodes
Use the arm64 filename on arm64. The preview targets glibc-based Linux systems.
Confirm the install:
arrodes --version
Open a repository and start Arrodes:
cd /path/to/project
arrodes
On first run, the Providers browser opens. Connect an account, browse its models, choose a supported reasoning level, and select Make default for new conversations. Arrodes then asks about project trust when needed and opens your first conversation. You can connect several accounts; signing in never changes an existing conversation's model.
Return with /providers (also /setup or /login). Connected providers appear first,
with their authentication method and connection status. Enter manages the selected
provider; F5 checks its status. Esc cancels an active sign-in or returns to chat.
/models opens the model browser: providers on the left, models on the right,
and details below. Tab switches between provider and model navigation, arrows select,
and typing filters models. Change provider also works in narrow terminals.
F5 discovers models from the selected provider. Enter chooses reasoning and then:
OAuth can open a browser or show a URL for manual completion. API keys and pasted authorization codes are masked and excluded from conversation drafts and history. Press Esc to cancel a setup screen without exiting; run /setup or /login later to continue.
Codex supports ChatGPT sign-in. Anthropic access uses a Console API key or a supported cloud provider; Claude.ai subscription OAuth is not supported. GitHub Copilot login is not included. Each provider's account terms and data practices apply.
Existing valid defaults skip setup. Launch selections take precedence for a new session:
arrodes --provider codex-backend --model MODEL_ID --thinking high
Use /models, /refresh-models, and /thinking to change the current session from the interface.
Launch in the repository you want Arrodes to work on, then describe the change or question in the composer. A one-line starting prompt can also be supplied at launch:
arrodes "Explain the failing command, fix the cause, and verify the result."
Arrodes keeps one live evaluator per session. Function calls appear compactly in the conversation; select a row to inspect its summary, output, native value, or evaluation source. Pending follow-ups can be edited or removed before delivery.
On feature/session-agents, the model can call agents/start! inside the same
persistent REPL to start an independently evaluated child session. Children and
their parent exchange addressed messages, inspect operation-specific outcomes,
and continue work without turning function jobs into agents. /agents opens a
team browser for navigation, messages, results and explicit cancel/stop/resume;
the ordinary composer retains its unsent text across navigation. Children share
the working checkout and process permissions, not the parent's live REPL
bindings. Foreground cancellation does not cancel accepted jobs or children.
See the agent/session contract. Current schema-6 stores reopen
directly; supported schema-3/4/5 layouts upgrade transactionally after a retained
backup. Unknown/newer, malformed and foreign stores are rejected intact, not reset.
See compatibility for supported layouts and recovery.
| Action | Key |
|---|---|
| Send while idle; steer while running | Enter |
| Insert a newline | Shift+Enter or Ctrl+J |
| Queue a follow-up | Ctrl+Q |
| Close a panel; otherwise request cancellation | Esc |
| Sessions | F2 |
| Commands | F3 or Ctrl+P |
| Agent roster (development branch) | F4 |
| Move to the next pane | F6 |
Compose a message in /agents (development branch) | F7 |
Inspect messages in /agents (development branch) | F8 |
| Attach a project file | @ |
| Discover commands | / |
| Scroll without following output | PgUp / PgDn |
| Inspect / expand a selected conversation row | Enter / Space |
| Follow the latest output | End |
| Inspector tabs | 1 Summary, 2 Output, 3 Value, 4 Code |
| Copy selected text; otherwise stop work | Ctrl+C |
| Exit | Ctrl+D |
| Command | Purpose |
|---|---|
/new | Create a session |
/sessions | Switch sessions |
/history | Inspect history and create a branch |
/refresh | Reconcile recorded session state without repeating a mutation |
/jobs | Inspect and cancel background function jobs; read output and native results |
/agents | Browse and control the agent team (development branch) |
/parent | Return from a child conversation (development branch) |
/pending | Edit or drop queued input |
/attach, /attachments | Add or remove project-file context |
/providers, /setup, /login | Manage provider connections and sign-in |
/models, /refresh-models, /thinking | Select or refresh model settings |
/rename | Rename the current session |
/continue | Continue from the current conversation |
/compact | Compact model context without deleting history |
/usage | Inspect measured cache tokens and active-path estimated spend |
/eval | Evaluate trusted Clojure input in the live session |
/reload | Reset the evaluator and reload resources; live definitions are lost |
/reconnect | Restart the owned core without repeating an interrupted mutation |
/copy | Copy the visible conversation |
/export | Write a local HTML export |
/reasoning | Show or hide reasoning |
/expand, /collapse | Expand or collapse recorded activity |
/delete | Permanently delete the current session after confirmation |
/help | Show keyboard help |
/quit | Exit Arrodes |
Prefix a message with // to send a literal leading slash.
Sessions are durable and can be reopened through /sessions or directly:
arrodes --session SESSION_ID
Conversation history, session configuration, stored artifacts, and supported retained values survive restart. Arbitrary live definitions, JVM objects, and live-only results do not. Branching changes conversation history; it does not undo edits, commands, or other filesystem effects. See Sessions and results.
For automation and integrations, the only headless terminal mode is:
arrodes --rpc
It serves the versioned JSON Lines API documented in the RPC protocol reference.
Application home resolves in this order: --home, ARRODES_HOME, then ~/.arrodes.
~/.arrodes/
config/
settings.edn
keybindings.edn
trust.edn
auth/
skills/
extensions/
prompts/
themes/
packages/
projects/
<readable-name>-<sha256-of-real-worktree-root>/
project.edn
settings.edn
data/
skills/ extensions/ prompts/ themes/ packages/
cache/
models/ jna/ bun/ opentui/
runtime/
<version>-<platform>-<arch>-<payload-digest>/
The project identity is the real Git worktree root, or the launch directory outside Git. Subdirectories and symlink aliases share a project bucket; separate worktrees do not. Arrodes does not create .arrodes, instructions, or ignore-file changes in the repository. Use project.info over RPC to discover the exact external directory.
Each project data store has one live owner. Different projects can run concurrently; a second process opening the same store is rejected. Use --data-dir only when deliberately selecting another store.
Trust allows project instructions and executable resources to load; it is not an operating-system sandbox. The evaluator, shell, MCP clients, and trusted extensions run with the Arrodes process's permissions. Credentials stay under auth/ or in referenced environment variables, not settings files.
Nothing is shared automatically. The RPC session.share method explicitly creates an unlisted GitHub gist; anyone with its URL can read it.
See Configuration and project state and Troubleshooting for current-format storage, ownership, and recovery details.
Start with the documentation map for product contracts, architecture, development, compatibility and releases. AGENTS.md routes coding agents to the project workflows.
MIT. Copyright 2026 DeadMeme5441.
Bundled third-party components retain their own licenses. Each release includes third-party notices and a corresponding-source companion with the applicable source code and rebuild instructions.