Mooj

The Local-First Parallel Agent Workspace Manager

Work on features, bugs, and experiments in parallel. Each task gets an isolated workspace for coding agents, development servers, and other terminal tools.

v0.31.0

mooj / shiba-inufeat/activity-sidebar
╭── Claude Code v2.1 ──────────────────────────────────────────╮
│ │
│ Welcome back, dev! │
│ │
│ ▐▛███▜▌ │
│ ▝▜█████▛▘ │
│ ▘▘ ▝▝ │
│ │
│ Opus 5.5 (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

Mooj connects Git worktrees, terminal sessions, and ports. Move between workspaces while many tasks continue in parallel.

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

01

Hook up a repo

Point Mooj at a Git repository on disk. It shows the main checkout and each Mooj workspace.

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 up to 10 terminal tabs in each workspace, with your shell configuration and environment. Run agents, a development server, logs, and other terminal tools.

What's actually inside a workspace

Workspaces are just folders

Behind the UI, a workspace is a Git worktree on disk at ~/mooj/workspaces/<repo>/<codename>/. You can cd into it from another terminal, open it in your editor, or use normal file tools. Remove it through Mooj so Git worktree metadata and the local branch are also cleaned up.

Mooj stores its state and workspaces on your Mac. It sends no telemetry and does not upload your code or activity to Mooj. Update checks, Git remotes, GitHub CLI actions, and coding agents can use the network.

~/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
 
✻ Welcome to Claude Code
 
> refactor the auth middleware to use
the new token service
 
● Read(src/middleware/auth.ts)
⎿ Read 48 lines
● Update(src/middleware/auth.ts)
⎿ Updated · 12 additions, 7 removals
>

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
main
feat/activity-sidebar
shiba-inu10030
fix/login-redirect
akita-inu10040
refactor/expense-partial
goldendoodle10050
Run
ReviewClaude
ClaudeReview with Claude
CodexReview with Codex
Open GitHub PR
Copy Branch Name
Remove
Ports 10030 – 10039

Easily hop 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.

Your work stays local.

Mooj stores workspaces and state on your devices. It does not upload your code or activity to Mooj.

No accounts

No signup, no SSO, and no Mooj-hosted application server.

No telemetry

Mooj does not collect or send your usage and activity data.

Plain git on disk

Workspaces are just folders set up with git worktrees.

Your subscriptions, your keys

Coding agents use the provider accounts and keys that you configure.

FAQ

+ How is this different from git worktree?

A workspace is a worktree. Mooj adds lifecycle management, isolated port allocation, persistent terminal sessions, pull-request and CI status, and a desktop interface.

+ Is Mooj macOS-only?

The desktop app is Apple Silicon only for now.

+ What does it cost?

Mooj is free. AI agents cost whatever your provider charges.

+ Which AI agents does it support?

Anything you can run in a terminal. Built-in workflows use Claude Code and Codex CLI. Other agents run normally in a terminal tab.

+ Can I use this commercially?

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

+ What about my code's privacy?

Mooj sends no telemetry and does not upload your code or activity to Mooj. Update checks, Git remotes, GitHub CLI actions, and coding agents can use the network. Agent requests use your provider account.