Mooj

The Local-only Parallel Agent Session Manager

Effortlessly juggle features, bugs, and experiments, simultaneously, in parallel, all at once. Every task gets its own isolated workspace to run anything a terminal can - agents, dev servers, etc.

Built for Apple Silicon · v0.24.0

mooj / shiba-inufeat/activity-sidebar
╭── Claude Code v2.1.137 ───────────────────────────────────────╮
│ │
│ Welcome back, dev! │
│ │
│ ▐▛███▜▌ │
│ ▝▜█████▛▘ │
│ ▘▘ ▝▝ │
│ │
│ Opus 4.7 (1M context) with xhigh effort · Claude Max │
│ ~/mooj/workspaces/mooj/shiba-inu │
╰──────────────────────────────────────────────────────────────╯
> add a recent-activity sidebar to the groups detail page, last 10 expenses
I'll add the sidebar by fetching recent expenses in the route handler
and rendering a new component in GroupShow. Reading the relevant
files first.
⏺ Read(src/routes/groups.ts) (38 lines)
⏺ Read(src/components/GroupShow.tsx) (61 lines)
⏺ Read(src/models/expense.ts) (24 lines)
Plan:
1. Add `orderBy: { createdAt: 'desc' }` to the expense query helper
2. In groups route handler, fetch
recentActivity = await db.expense.findMany({ where: { groupId }, include: { user: true }, take: 10 })
3. Pass recentActivity to GroupShow, render with a new
`src/components/ActivityItem.tsx` component
Want me to start with the route handler change?
-- INSERT --◉ xhigh · /effort

Open this page on a wider screen to see the full three-panel layout.

Multitask effortlessly

Under the hood, Mooj is just a glorified terminal manager. Easily navigate through your workspaces and work on multiple tasks in parallel.

No repositories found.
Add one with the + button above.

01

Hook up a repo

Point Mooj at a git repo on disk. It tracks every branch, commit, and PR from there.

mooj
02

Spin up a workspace

You get a fresh worktree at ~/mooj/workspaces/<repo>/<codename>/ to make your isolated code changes.

claude
✻ Claude Code v2.1.137
> add a recent-activity sidebar to the groups page
I'll plan the change first.
⏺ Read(src/routes/groups.ts)
⏺ Read(src/components/GroupShow.tsx)
03

Do your work

Open as many terminal tabs as you want, each with your full shell config and env. Run your agents, dev server, logs, etc.

What's actually inside a workspace

Workspaces are just folders

Behind the UI, a workspace is just a git worktree on disk at ~/mooj/workspaces/<repo>/<codename>/. You can cd into it from any other terminal, point your editor at it, rsync it, even delete it with rm -rf.

Everything stays local. Mooj does not make any outbound network requests (except to check for app updates).

~/mooj/workspaces/
├── mooj/
│   ├── shiba-inu/          (feat/activity-sidebar)
│   ├── akita-inu/          (fix/login-redirect)
│   └── goldendoodle/       (refactor/expense-partial)
└── docs-site/
    └── labradoodle/        (docs/api-coverage)

Every tab is just a terminal

Your $PATH, your dotfiles, your env, the same shell you'd open in a stock Terminal. Run claude or codex in one, a dev server in the next, psql or tail -f in a third.

claude

Ports allocated per workspace

Each workspace reserves a block of ports the moment it's created. For example, the shiba-inu workspace owns :10030-:10039, akita-inu owns :10040-:10049, and they never overlap.

mooj-dev/mooj3
feat/activity-sidebar
shiba-inu:10030
fix/login-redirect
akita-inu:10040
refactor/expense-partial
goldendoodle:10050
Run
ReviewClaude
ClaudeReview with Claude
CodexReview with Codex
Open GitHub PR
Copy Branch Name
Remove
Ports 10030 – 10039

Easily hop back into your editor

Sometimes you actually need a full fledged editor. One click opens the current workspace in your editor of choice.

Finder
VS Code
Cursor
Zed
Sublime Text
Copy path

Keybindings that feel just right

Keyboard-first, vim-mode included. Every action is one chord away, and every chord is yours to remap.

mooj
main
feat/activity-sidebar
fix/login-redirect

Create Workspace

mooj
~/mooj/repos/mooj
Describe what you want to work on…
Create
N

New task workspace

New branch, new worktree, new agent — all from one keybinding.

run
claude
scratch
sql
$ run
web.1 | Listening on http://127.0.0.1:10031
web.1 | Started GET "/groups/3"
web.1 | Completed 200 OK in 56ms
E
D

Cycle between workspace terminals

Quickly cycle through parallel work inside of a workspace.

mooj5
feat/activity-sidebar
shiba-inu
fix/login-redirect
akita-inu
refactor/expense-partial
goldendoodle
docs/api-coverage
labradoodle
experiment/dark-mode
pug
Space

Next agent that needs attention

Mooj watches every terminal for agents running and waiting. Easily jump to the next one that needs your input.

Keybindings are configurable. Open Settings → Keybindings to change them.

Local‑only.

Mooj runs entirely on your machine. No server, no signup, no telemetry.

No accounts

No signup, no SSO, no per-seat license. Install the .dmg and go.

Plain git on disk

Workspaces are just folders set up with git worktrees at ~/mooj/workspaces/.

No telemetry

Mooj doesn't track usage or phone home.

Your keys, your subscriptions, your tokens

Use the subscriptions you already pay for, or your own API keys.

FAQ

+ Is Mooj macOS-only?

The desktop app is Apple Silicon only for now.

+ What about my code's privacy?

Mooj doesn't phone home or upload anything. Agents you launch (claude, codex) do send to their providers — but those are your tokens and your billing relationship.

+ What does it cost?

Mooj is free. AI agents cost whatever your provider charges (Claude Max, OpenAI API, etc.).

+ Which AI agents does it support?

Anything you can run in a terminal. Built-in workflows use claude and codex specifically. Other agents run like normal in a terminal tab.

+ Can I use this commercially?

Yes. Mooj is free for any kind of use — personal, commercial, or otherwise.

+ How is this different from git worktree?

A workspace is a worktree. Mooj adds lifecycle management, isolated port allocation, attached terminal sessions, PR + CI tracking, a UI for your dev environment.