LIVE · 6 AGENTS RUNNINGLIVE · 6 AGENTS
terminalagenteditorbrowserzoom 62%
[ §00 ] — infinite canvas IDE for developers

The mission control
for AI coding agents.

Claude Code, Codex, Gemini — every agent live on one infinite canvas. No context switching.

install · ~10s
$curl -fsSL https://api.getnyx.dev/install.sh | bash
verified sha256 no Gatekeeper warning installs & launches Nyx
14-day free trial
$29 · lifetime
macOS · apple silicon
[ §01 ]Orchestration

One canvas.
Every agent live.

Spawn Claude Code, Codex or any CLI as a real PTY/TUI tile. Pan, zoom, arrange them however you want. Status flips Configuring → Working → Done live from the session itself — no edges or wiring.
nyx canvas · sprint-14
claudeOpus 4.7 · writing4m
you
>
claudeOpus 4.7
writing task
reading src/server/auth.ts
mapping attack surface
drafting patch (6 files)
✓ ready · +142 −38 · 6 files
codexGPT 4.5 · writing2m
you
>
codexGPT 4.5
idle
pulling last 24h OpenTelemetry spans
spotting 3 N+1 queries in middleware
drafting parallel fetch
✓ root cause · p95 → 210ms projected
terminalzsh · ~/projects/nyx3 cmds
$pnpm install
Lockfile is up to date · resolving…
Progress: resolved 847, reused 847
Done in 3.2s
$git status
On branch feat/auth-hardening
Changes not staged for commit:
modified: src/server/auth.ts
modified: src/server/middleware.ts
$pnpm test src/server/auth
auth › rateLimit › blocks > 5 tries (42ms)
auth › login › logs attempt (18ms)
2 passed · 0 failed · 0.71s
$
browserlocalhost:3000pick mode
localhost:3000/admin/orders
pick
Orders
Q4 · last 30 days
Revenue
$184,209
+12.4%
Orders
2,847
+6.1%
Refunds
28
−3.2%
Daily revenue
↗ 12.4%
Order
Total
Status
Ago
#8421 · Klein
$248.00paid2m
#8420 · Reyes
$189.50paid8m
#8419 · Tanaka
$92.00pending11m
#8418 · Andersson
$418.70paid24m
tr[8420]agent
review6 files · +142 −38unreviewed
export async function login(email) {
- const user = await db.users.find({ email });
+ await rateLimit.check(email);
+ const user = await db.users.find({ email });
+ await audit.log("login.attempt", { email });
return sign(user);
}
◈ 2 agents · 3 tiles · workspace / sprint-14
● working · 2✓ ready · 1zoom 28% · fit
[ §02 ]Worktrees

Tab juggling
ends here.

You know the dance: stash, cd, checkout, npm install, hope nothing breaks. Three tabs deep into a fix, your editor is two branches behind.Worktrees give every branch its own folder. Drop them on the canvas as zones — agents work side by side, each in their own working directory.
without worktrees
One repo. One context.
auth.tspayment.tsbench.tsmiddleware.ts+4
$ git stash — save half-done work
$ git checkout fix/payments
$ pnpm install — deps changed
$ git checkout feat/auth
! merge conflict: package.json
$
  • One claude session — wait until it finishes
  • Every switch: stash, install, rebuild
  • Conflicts when branches touch the same files
  • Editor open on whichever branch was last
with worktrees
Each branch. Its own folder.
wt:feat/auth~/wt/feat-auth
claude· Opus 4.7writing · 4m
you
harden /login — add rate limit + audit log
drafted middleware/rate-limit.ts
writing audit hook…
wt:fix/payments~/wt/fix-payments
codex· GPT 4.5reading · 2m
you
why is /orders p95 > 800ms in prod?
pulled 24h OpenTelemetry spans
drafting parallel fetch…
  • Multiple agents — running side by side
  • Switch = just look at another zone
  • Each branch has its own files. No conflicts
  • Editor stays where you open it
CLAUDE CODE ◈CODEX ◈GEMINI ◈ANY CLI AGENT ◈CLAUDE CODE ◈CODEX ◈GEMINI ◈ANY CLI AGENT ◈CLAUDE CODE ◈CODEX ◈GEMINI ◈ANY CLI AGENT ◈CLAUDE CODE ◈CODEX ◈GEMINI ◈ANY CLI AGENT ◈CLAUDE CODE ◈CODEX ◈GEMINI ◈ANY CLI AGENT ◈
[ §02 ]Six tile types

Six tiles.
One hotkey each.

Hit the shortcut, a tile spawns where the agent runs, where the output shows, or where you review the diff. Every tile is resizable, connectable, persists per workspace.
agent— live preview
you
>
claudeOpus 4.7
writing task
reading src/server/auth.ts
mapping attack surface
drafting patch (6 files)
✓ ready · +142 −38 · 6 files
01 · agent

Spawn any CLI agent as a real PTY session. Slash commands and prompts stay native.

[ §03 ]Focus mode

Hit ⌘⏎
Canvas folds into a split pane.

Pair one tile with one agent. Everything else collapses. The real Focus layout is a resizable split — drag the divider, hit Esc to exit.↻ auto-demo · click to drive
terminal— zsh
$pnpm install
Lockfile is up to date · resolving…
Progress: resolved 847, reused 847
Done in 3.2s
$git status
On branch feat/auth-hardening
Changes not staged for commit:
modified: src/server/auth.ts
modified: src/server/middleware.ts
$pnpm test src/server/auth
auth › rateLimit › blocks > 5 tries (42ms)
auth › login › logs attempt (18ms)
2 passed · 0 failed · 0.71s
$
browser— localhost
localhost:3000/admin/orders
pick
Orders
Q4 · last 30 days
Revenue
$184,209
+12.4%
Orders
2,847
+6.1%
Refunds
28
−3.2%
Daily revenue
↗ 12.4%
Order
Total
Status
Ago
#8421 · Klein
$248.00paid2m
#8420 · Reyes
$189.50paid8m
#8419 · Tanaka
$92.00pending11m
#8418 · Andersson
$418.70paid24m
tr[8420]agent
todo— sprint 14
Add rate limit to /login
Ship audit log for auth⟳ running
Write e2e tests
Deploy to staging
chat— codex
you
why is /login slow?
◈ codex
three sync db calls in middleware. i'll parallelize.
diff— +14 −6
export async function login(email) {
- const user = await db.users.find({ email });
+ await rateLimit.check(email);
+ const user = await db.users.find({ email });
+ await audit.log("login.attempt", { email });
return sign(user);
}
notes— sprint 14
sprint 14
auth refactor · observability · ship friday
"the tool for people who ship"
editor— auth.ts
1
export const runAgent = async (task: Task) => {
2
const spec = await parse(task);
3
const plan = await claude.think(spec);
4
// stream diff back to canvas
5
return stream(plan, { canvas, review: true });
6
};
agent— claude
you
>
claudeOpus 4.7
writing task
reading src/server/auth.ts
mapping attack surface
drafting patch (6 files)
✓ ready · +142 −38 · 6 files
◯ canvas · hit ⌘⏎ to focus the two centered tiles
[ §04 ]Diff review

Review your agent
like a pull request.

Leave inline comments. Click Send Review. The agent reads your feedback and iterates — no copy-paste.
diff— auth.ts +14 −6
1 export async function login(email, pwd) {
2+ const blocked = await rateLimit(req.ip);
3+ if (blocked) return tooMany();
4 const user = await User.findOne({ email });
5- if (!user) throw new Error("nope");
6+ if (!user) return invalid();
7 const ok = await bcrypt.compare(pwd, user.hash);
8+ await audit.log({ email, ok, ip: req.ip });
9 if (!ok) {
10+ await flag.increment(email, "auth.fail");
11 return invalid();
12 }
13 return session(user);
14 }
15+ analytics.track('auth.attempt', { ok, email });
line 8 ·also emit analytics event, not just audit log
◈ claude · idle · waiting for review
[ §05 ]Browser inspect

Point at a bug.
Describe it. Ship the fix.

Click any element, attach a comment + screenshot — it flies to the agent with full DOM context.
browser— staging.getnyx.dev
◎ INSPECT · ON
staging.getnyx.dev
Nyx
docspricinglog in
NYX · v0.2.0
One canvas for
every agent.
The IDE for AI-first engineering. Spawn agents, share context, ship.
Start buildingSee the docs
section.hero · 260×88
section.hero ·turn this into a proper hero section
◈ claude · idle · element picker armed
[ §06 ]Pricing

One price.
Yours forever.

Try it free for 14 days. Pay once, keep it.
◈ NYX · LIFETIME LICENSE
$29
once · yours forever
14-day free trialall future updates3 devices per licenseno subscription
macOS 12+ · apple siliconpay via btc · eth · usdtearly access · v0.3
[ §07 ]FAQ

Frequently
asked.

Still curious? → [email protected]
Claude Code, Codex and Gemini CLI out of the box. Any CLI agent that runs in a terminal works — Nyx spawns it as a real PTY/TUI session inside a tile. Slash commands, confirmations and manual input all stay native.
Nyx itself runs locally — your code, tiles and workspaces stay on your machine. The agents it spawns (Claude Code, Codex, Gemini) are online CLIs, so they need internet to reach their providers.
Early access is live right now — download the macOS build and try it for 14 days. Windows and Linux follow after the Mac version stabilises.
$29 once — you own it forever. Includes all future updates, runs on 3 devices, and kicks in after a 14-day free trial (no card needed to start).
Three devices per license. Laptop, desktop, work machine — all from one key.
Yes — 14-day free trial, no credit card needed. Just download, run it, decide later.
All future updates are included for free once you own a license — new tiles, new features, bug fixes, all of it. No separate "pro tier", no upgrade paywall.
[ §08 ]Launch updates

Stay in
the loop.

Drop your email — we'll ping you about major releases, roadmap milestones, and occasional build notes. One list. No spam.
✓ Release announcements✓ Roadmap highlights✓ Unsubscribe anytime