Skip to content

Repository files navigation

Mjolnir

Mjolnir — choose Codex or Claude to code and review

Mjolnir (mj) is a full-featured frontend (ACP client) for Codex and Claude. It gives both agents the same terminal workflow, team configuration, review pipeline, and remote-control surface, without taking them out of the harness they were trained to use.

Features

  • Codex and Claude teams: use either agent in its native harness for coding and review, or split the roles between them without changing tools or workflows.
  • Integrated adversarial review: automatically challenge changes with an independent, cross-provider reviewer with access to specialized static analysis tooling.
  • [Remote control]: run the workspace and control plane on your machine while driving the session from another browser or device.
  • Parallel subagents: delegate to as many as 16 write-capable agents in fresh sessions, with live progress and completed reports returned to the primary agent.
  • Mid-turn steering: queue a correction while a supported agent is working, then use Cancel to apply the oldest queued correction to the running turn.
  • Worktree sessions: start work in a linked Git worktree and keep agent changes separate from the current checkout, whichever coder you choose.
  • Shared project knowledge: carry verified discoveries across Claude and Codex sessions through one local, inspectable memory interface synchronized into each provider's native memory files.
  • Local voice input: dictate prompts on macOS, Linux, and Windows with cross-platform, on-device speech recognition.

Web interface

Mjolnir browser interface showing session history, streaming agent output, and queued prompt controls

Four teams, one shortcut

Choose one of four teams during onboarding, from /mjconfig, or with Shift+Tab in a session:

  • Codex
  • Claude
  • Codex coder + Claude reviewer
  • Claude coder + Codex reviewer

The coder owns the primary session. The reviewer backs the independent review pass that challenges changed turns, plus the default subagent pool. Switching teams keeps Mjolnir's terminal, permissions, sessions, tools, and remote workflow unchanged.

Mjolnir itself, its remote-control server, transcripts, and workspace tools run on infrastructure you control. Model requests still use the selected provider under its terms and data boundaries.

Shared project knowledge

Claude and Codex should not have to rediscover the same build requirement, architecture constraint, or debugging conclusion in separate sessions. Mjolnir gives both agents one local project-knowledge layer and synchronizes it into their native memory files before sessions start.

Agents can save verified discoveries as they work, or you can manage them directly:

mj memory list
mj memory add "Release builds must run through Nix"
mj memory add --global "Prefer concise commit messages"
mj memory forget m7

Use /memory for the same workflow inside an interactive session. Knowledge can be project-scoped or global, remains readable in Mjolnir's local memories.json, and is synchronized into provider-native memory rather than being added to a user prompt.

Mjolnir imports Claude Code's native project MEMORY.md into its shared store, then writes a managed section to Claude and Codex native memory files. This lets a discovery made in one agent remain useful when you switch teams without altering either provider's user messages.

See Shared project knowledge for behavior, controls, and source ownership.

Requirements

You need credentials for at least one configured model provider. Mjolnir ships with built-in Codex and Claude ACP routes (and Anvil on Android) and manages the Node.js runtime those routes need: an embedded Node 24 on macOS, Linux, and Windows, and Termux's nodejs package on Android (installed via pkg when npx is missing). A system Node.js installation is only required when installing through npm/npx. Provider use may incur cost.

Review the data and trust boundaries before connecting a private repository.

Install

Choose any of the following methods.

Release installer: macOS and Linux on x86-64 or ARM64; Android on ARM64:

curl -fsSL https://raw.githubusercontent.com/BrokkAi/mjolnir/master/install.sh | bash

Homebrew: macOS (Apple Silicon or Intel) and Linux (x86-64 or ARM64 glibc):

brew install brokkai/tap/mjolnir

npm or npx: macOS, Linux, Windows, and Android with Node.js 18 or later:

# Linux: install the WebKitGTK 4.1 runtime first.
# Ubuntu/Debian: sudo apt-get install libwebkit2gtk-4.1-0
# Fedora: sudo dnf install webkit2gtk4.1
npm install -g @brokkai/mjolnir
# Or run without a global install:
npx -y @brokkai/mjolnir

crates.io: install the terminal client and desktop voice worker with Rust:

# Linux: install WebKitGTK 4.1 development files first for `mj app`.
# Ubuntu/Debian: sudo apt-get install libwebkit2gtk-4.1-dev libasound2-dev
# Fedora: sudo dnf install webkit2gtk4.1-devel alsa-lib-devel
cargo install --locked brokk-mjolnir brokk-mj-voice-worker

Release archive: download the archive for Linux, macOS, Windows, or Android from GitHub Releases.

Build from source:

git clone https://github.com/BrokkAi/mjolnir.git
cd mjolnir
cargo build --release
./target/release/mj --cwd .

Desktop release packages include mj-voice-worker; Android packages omit voice support. See the full installation guide for platform details, upgrades, checksums, and custom install paths.

Run

Open a repository and run:

mj

First launch discovers available provider credentials and opens setup on the team those credentials support: Claude coder + Codex reviewer with both providers signed in, or that provider's own team with one. Press Shift+Tab to switch teams later, or open the Team tab in /mjconfig. Team and adapter route changes apply to a new session. In an active session, /model, /effort, and their /mjconfig entries change the model or reasoning effort without restarting when the connected ACP agent advertises the corresponding control; choices made during a turn apply after that turn completes.

Try it

The 10-minute evaluation uses a checked-in disposable fixture to exercise a delegated subagent change, its pushed-back report, explicit review, session resume, and headless output without risking a real repository.

For a quick read-only headless check:

mj --print --permission-mode manual "summarize this repository; do not modify files"

Use an isolated worktree for an interactive coding session:

mj --worktree

Documentation

Contributing

See CONTRIBUTING.md for development setup, runtime invariants, tests, and dependency-license maintenance. Maintainers tagging a release should follow RELEASING.md. Repository-specific agent guidance lives in AGENTS.md.

License

Mjolnir and its voice worker are licensed under GPL-3.0-only. See LICENSE. Official release archives include the corresponding source offer, dependency reports, and supplemental notices. See License and use cases and Third-party notices.

About

Forge-grade Rust terminal client for Agent Client Protocol (ACP) coding agents, with model-first routing and a multi-agent coding council.

Topics

Resources

Code of conduct

Contributing

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages