Multiple agents in parallel.The chores handled.

A self-hosted dashboard for running several Claude Code and Codex sessions at once, each in its own git worktree. Artus takes over the chores around them: permission prompts, PR checks, commit messages and memory.

Open source under Apache 2.0. Runs on your own Mac or Linux machine.

See it work

This is the real dashboard replaying recorded sessions. Nothing runs on a server.

Open full screen

Your attention goes to the decisions, not the plumbing.

Working with one coding agent in one terminal is easy. Working with several at once (a feature build here, a PR review there, a quick experiment on the side) turns into branch collisions, lost terminal scrollback, and "which tab was that in?". Artus gives every session its own worktree, its own sidecar process, and a persistent, replayable transcript, with the human-in-the-loop controls (permission prompts, plan approval, cost budgets) in one place.

The other half of the problem is the chores around the agents. With a few running, most of your time goes to babysitting: creating and cleaning up worktrees, noticing which agent is stuck on a permission prompt, checking whether a PR's CI went green, writing commit messages for code you didn't type. The dashboard takes those over, so your attention goes to the decisions, not the plumbing.

It is deliberately a single-user, LAN-deployment tool: one token, no multi-tenant auth, your own machine's claude, codex and gh credentials.

What it takes off your plate

Parallel without collisions

Every session gets its own git worktree and sidecar. Idle sessions park and wake on the next message; templates, a quick-start dialog, parent/child fan-out, cost budgets and one-click compaction keep several of them manageable.

The dashboard with the session sidebar and two of four parallel sessions

The chores, handled

Desktop notifications when an agent needs you, a "Needs you" list with inline allow/deny, commit messages and PR descriptions drafted for you, background PR-check polling, and handoff briefs for picking a task up later.

A Bash permission request with allow and deny buttons

Review sessions

Point a session at a PR: a detached worktree at the PR head, commit and push disabled, and findings posted as a real GitHub review through an approval card you click.

Approval card for submitting a pull request review

Memory that outlives the session

An Obsidian-compatible Markdown vault with hybrid search, episodic memory injected into sessions, and opt-in end-of-session reflection whose proposals you approve or discard.

Memory vault dialog: notes with tags on the left, one note open on the right

Skills, tools, templates

Import skills and agents from local folders or GitHub, tag and describe them, sync on a schedule, and attach them per session or template, next to MCP servers, code intelligence, Linear import and Slack control.

Skill and agent library listing five skills and agents with their tags

See everything, stay in control

Full transcripts for live and closed sessions, the changed files per session, a Mermaid diagram of the code logic a session touched, and permission modes with plan approval so nothing irreversible happens without you.

Changes panel with the diff of one file
Visualize: a flowchart of the code logic a session changed

Yours

Single user, on your own machine, with your own claude, codex and gh logins. No hosted service, no multi-tenant auth, Apache 2.0, built in the open with a documented decision log.

How it works

Artus architecture The browser dashboard talks REST and WebSocket to the Spring Boot backend, which journals to PostgreSQL and talks NDJSON over stdio to one sidecar per session: the Claude Agent SDK sidecar and the Codex app-server sidecar, each working in its own git worktree. Browser Vite + React Spring Boot Java 25 PostgreSQL 17 event journal Claude sidecar Agent SDK own git worktree Codex sidecar app-server own git worktree REST + WS NDJSON

One sidecar process per live session speaks a provider-neutral NDJSON protocol; the Claude Agent SDK and the Codex app-server each stay behind their own sidecar.

Every event gets a monotonic per-session sequence number and is journaled to Postgres, so clients reconnect and replay losslessly.

Get started

macOS is the primary target; Linux and WSL work. You need at least one provider CLI logged in.

git clone https://github.com/eupakhomov/artus.git
cd artus
docker compose up -d   # PostgreSQL
./install.sh           # build sidecars, frontend and backend
./start.sh             # start, print URL + access token

Open the printed URL (default http://localhost:8080), paste the token, create a session. The first build downloads a Node distro and runs npm install, so expect it to take a while once.

ToolVersionNotes
JDK25 (Temurin)mvn -v must report Java 25
Maven3.9+or use the bundled ./mvnw
Node22 LTS or newerfor the sidecars and the frontend
Dockerany recentPostgreSQL runs via docker-compose
Provider CLIclaude and/or codex, logged insidecars use your own credentials
gh CLIlogged in (optional)PR creation, PR checks, review sessions

Built in the open

I built Artus because I kept running three or four agents at once and spending my time on the plumbing around them instead of on the work. It is a single-maintainer project, developed phase by phase, and every phase has a design doc and a place in the decision log.

Issues and pull requests are welcome.

The name

Artus is Latin for "joint", the thing that connects parts. It is also close to the Celtic artos, "bear", the root of the name Arthur, hence the bear in the logo.

Star on GitHub
The Artus bear logo