One ~4 MB Rust binary · no Electron · no browser · no server

Mission control for
your coding agents

Run Claude Code, Codex, Cursor, Pi and Muse across every project and git worktree you own — from one terminal, one keyboard, one tree. They keep working when you close it.

$ curl -fsSL https://raw.githubusercontent.com/ameerdhi7/NebulaX/main/install.sh | sh
macOS & Linux · same command installs and updates
nubla x: projects, worktrees and sessions on the left, a live Claude Code session on the right
Read the dots, not the screens

Three agents, three tabs, and no idea which one needs you

nubla x replaces the reading with a tree and a color. Every session carries a status dot; every parent rolls up its children — so a red dot on a collapsed project tells you exactly where to look.

Freshagent never run
Runningturn in progress
Unseenfinished, nobody looked yet
Finisheddone and read
Needs feedbackwaiting on you
Terminatedprocess died mid-run
What you get

One tree, up to four panels

Projects → worktrees → sessions → terminal pane. h/j/k/l moves, Enter drills in, and landing on a live pane hands it the keyboard.

🌳

A daemon that owns the PTYs

Quit the TUI, shut the laptop, come back tomorrow. The agents never stopped, and the scrollback ring is replayed on attach.

Status dots you read instead of screens

Yellow mid-turn, violet finished-and-unseen, green read, red waiting on you — plus a n done badge counting the terminals you still owe a look.

🔀

Real git worktrees, one keystroke

n branches off into an actual git worktree. Two agents in two directories never collide, and a worktree hook can claim a port or route.

🎯

Agents that drive nubla x back

Tell a session "do this in a worktree" and it runs nebula worktree, then restarts itself resumed inside the new checkout.

🔧

Every pull request & issue, in place

nubla x asks gh what's open. Read a PR under the cursor, g for its diff, y to comment, n for a session scoped to it.

🔎

Diff, find, grep, browse

g the diff viewer, f the file finder, F a git grep, b the tree browser — all scoped to the selected worktree, one key from anywhere.

/ finds anything, anywhere

The palette spans every workspace, sorted by attention: needs-feedback first, then running, then unseen — so / Enter is the fastest way back to whatever needs you.

🛰️

It follows you to other machines

nebula ssh <host> opens nubla x there, installing if missing. nebula tunnel puts that machine's TUI in a browser tab over one ssh tunnel.

📴

No Electron, no browser, no MCP

One ~4 MB Rust binary and a unix socket. A daemon and a ratatui client — that's the whole thing.

Jira-driven agentic workflow

The ticket board, in your terminal

Pull the Jira tickets assigned to you and show them as a board — cards you scan and open, kept current by the daemon whether or not the UI is open. Press Shift+J in the TUI, or run nebula web for the same board in a browser.

s
Start a run

The daemon cuts feat/<key>-<slug> and launches Claude with the ticket as context. Batch-start with a concurrency limit; the rest queue.

Checks & an independent review stage

Configured checks run, plus a separate review pass, tracking quality evidence that goes stale when the code moves.

An honest loop

The agent reports with nebula stage done, the daemon captures the diff as evidence, and the card becomes Ready — a turn that ends without a report is Needs input, never a fake Ready.

Dependency gating

Only explicit Blocks links gate a ticket; a blocked card shows blocked by AQ-### and sorts after the work you can actually start.

nubla x Jira ticket board with cards, filters, evidence badges and status dots
Supported harnesses

Five CLIs out of the box

Install the CLI, pick it in the n picker, done. A sixth, Grok, needs one config block. Teach nubla x any new CLI with one harnesses entry.

ClaudeClaudeclaude
CodexCodexcodex
CursorCursorcursor-agent
PiPipi
MuseMusemuse
GrokGrokgrok
Quickstart

From zero to an agent in five keys

Add a repo

A project is just a git checkout. nebula add ~/code/my-app — or nebula add . from inside it.

Open the TUI

A bare nebula launches it and auto-starts the daemon. Tab / h l move focus, j k the selection.

Pick a worktree

n in the worktrees panel branches off into a real git worktree. Two agents, two directories, no collisions.

Start the agent

n opens the picker — Claude, Codex, Cursor, Pi, Muse — then type the first prompt. Or p for a quick prompt.

Walk away

q leaves the TUI; the daemon keeps every PTY. Come back with nebula an hour later, scrollback replayed.

Documentation

Everything, one page away

The full docs render right here in the browser — keys, commands, sessions, configuration and how it all works.