1a The desktop app, live. Five tabs. Board opens first: the whole fleet across seven stages, a one-line status under every card, and anything that needs you glowing; click a card and its session opens right there as a modal. Sessions is the same conversation full-screen, with the cards that need you in the left rail. Code is the repo with AI in the margin: file tree, highlighted source, and a right pane that explains the file, its history, its cards and what it talks to. Settings (right-aligned with Insights) holds it all: per project, and workspace-wide: skills, MCP servers, plugins and the IDE itself; Insights is time and spend.
Grid Console ALPHA {{ m.l }} {{ i.l }} {{ i.k }} ⌘K History ? {{ themeLabel }} {{ t.mk }} {{ t.l }} + New card JR SOLO JR Jordan Reyes jordan@grid.dev SOLO · 1 SEAT renews 14 Sep Plans & licence… Devices & sign-ins Billing ↗ Action history⌘⇧H Report a problem Sign out
{{ n.i }}{{ n.l }}{{ n.badge }} PROJECT SETUP · VERTEX ● 3 NEED YOU
{{ w.ic }}{{ w.l }}
{{ p.l }} {{ p.n2 }}
{{ w.ic }}{{ w.l }}
{{ bmBack }}esc
{{ g.g }} {{ g.n }} {{ c.proj }} {{ c.k }} {{ c.age }} {{ c.t }} {{ c.stage }}
{{ p.n }} + New card
{{ focusKey }} {{ cardTyI }} {{ cardTyL }} {{ focusTitle }} {{ focusModel }} ▶ {{ runCount }} End
/goal {{ focusProj }} {{ goalText }} {{ goalPct }}
CONVERSATION what it did, in plain rows: click any row for the raw output ▤ Terminal ⌘\ ✧ {{ focusEl }}
SESSION STARTED {{ sesStart }}
YOU {{ c.t }} {{ c.when }}
{{ c.t }}
{{ c.mark }} {{ c.t }}
{{ c.ok }} {{ c.name }} {{ c.target }} open {{ c.stat }} {{ c.fold }}
{{ c.out }}
{{ c.askKick }} {{ c.t }} {{ c.askAct }}
{{ stateText }} · {{ focusEl }} 20 prompts sent · ⌘↑ recalls the last
◉ hold to talk ⌘⏎ send
↵↵ auto mode on shift+tab to cycle {{ focusCx }} · $1.12 · {{ focusEl }}
{{ focusStage }} ⛶ Open card
{{ cardTyI }} {{ cardTyL }} {{ cardTyShort }} {{ panelMicro }}
THE PLAN · WRITTEN 1H AGO Per-key quotas with a token bucket in Redis. Four steps, six files, one guarded migration. {{ s.n }} {{ s.t }} FILES IT WILL TOUCH {{ f.s }} {{ f.n }} {{ f.d }} DETAILED TASKS2 of 7 done {{ k.mark }} {{ k.t }} HOW IT WILL BE VERIFIED {{ v.t }} WHAT IT WILL NOT DO {{ v.t }} QUESTIONS IT ASKED1 answered · 1 open Is a bucket enough, or a sliding window? Partners hit us in bursts.09:31 you: a bucket — capacity handles the burst, refill sets the sustained rate OPEN QUESTION · WAITING ON YOU {{ planAsk }} 60/minUnlimited 6 files ~180 lines 1 guarded migration After approval it builds without asking until Review. The schema step still stops for a tap: project rule. SUMMARY {{ chSummary }} CHANGES SO FAR+140−2 {{ f.s }} {{ f.n }} {{ f.add }} {{ f.del }} {{ l.n }}{{ l.t }} TASKS · 2 OF 4 DONE {{ k.mark }} {{ k.t }} running CARDS IN THIS RUN · 3 picked up on its own {{ s.t }} {{ s.role }} Grid noticed these three touch the same worklist and the same API, so it kept them in one run instead of racing three agents at the same rate limit. Nothing is pushed. Commits happen at Deliver, after your review. ⚠ IT NEEDS A DECISION 1,800 legacy JPEGs have no srcset variants. Generate them now, or lazily on first request? Now: one batch job, ~22 min, ≈$4 of CPU: cache warm from day one. Lazily: zero upfront cost: the first visitor per image waits 300–800ms once. A · Generate now (recommended) B · Lazily, on first request Paused 22m. The other three steps are done and sitting in the working tree. READY FOR REVIEW {{ rvSummary }} THE PLAN · AS APPROVED3 held · 1 changed {{ s.mark }} {{ s.t }} {{ s.d }} {{ b.i }} {{ b.t }} running locally for this review · localhost:5173 Open ↗ THE CHANGES · 4 FILES{{ rvDecided }} {{ f.s }} {{ f.n }} {{ f.dm }} {{ f.add }} {{ f.del }} COMMIT · WAITING ON YOUR APPROVE {{ rvCommit }} VERIFICATION · 4 CHECKS 2 pass · 1 running · 1 on you Not just a unit suite. A card is verified when every check its project defines comes back green: tests, a real browser run, an HTTP probe, and anything only you can judge. {{ v.mark }} {{ v.k }} {{ v.n }} {{ v.s }} {{ v.d }} {{ v.out }} Screenshot per step, kept with the card. Click to watch the run. Re-run all Tick the manual check All green closes the card and writes the outcome to project memory. A red check brings it back to you with that check on top. NO SESSION OF ITS OWN ⌘2 Close every MR untouched for a month That run created this card and picked it up by itself: same worklist, same API rate limit, so a second agent would only fight it. Nobody assigned it. Open ⌘2 and watch it there IF YOU WANT IT SEPARATE Give it its own session Hand it to a different session… Two agents on one repo area is the usual way work gets lost, so a run that finds related cards keeps them together. You never assign them by hand; you can always split one off. Move to Inbox Take it off ⌘2 CLOSED · 2H AGO Cards drag between stages on mouse and touch. A manual drag is treated as your decision: the agent re-plans instead of dragging back. WRITTEN TO GRID MEMORY “A manual drag overrides the pipeline: never drag it back.” 3 files +212 −38 $2.10 Reopen card
Approve plan: start building Revise
Review change by change → ✓ Approve all changes Reject…
{{ w.ic }}{{ w.l }}
WHILE YOU WERE AWAY · 5H 40M 3 cards finished, 1 question, 1 plan ready. $9.20 spent, nothing pushed.
Board 18 open · 943 total ● 3 WAITING ON YOU › {{ t.i }} {{ t.l }} / ⊞ Group: stage ↩ Recent actions EVERYTHING AGENTS CHANGED · 24Heach has a way back {{ u.t }} {{ u.p }} · {{ u.age }} {{ u.act }}
{{ r.l }}
{{ col.name }}{{ col.num }} {{ col.sub }}
{{ k.tyI }} {{ k.p }} {{ k.needChip }} {{ k.t }} {{ k.line }} {{ k.age }} {{ k.blocked }} {{ k.sched }} {{ k.ownL }}
{{ col.more }} + Add
{{ w.ic }}{{ w.l }}
Code CARDS HERE {{ k.short }} {{ k.n }} files
{{ mi.sec }} {{ mi.l }} {{ mi.k }} plugins add items here · editor.contextMenu
WHO CALLS {{ ccTitle }} {{ ccCount }}
{{ c.n }}{{ c.ln }} {{ c.d }}
bright rows are indexed: click to jump to the calling line · grey callers are not indexed yet
FILES ± changed only
⊼ {{ r.l }} {{ r.meta }} {{ r.folder }} {{ r.l }} {{ r.ig }} {{ r.l }} {{ r.meta2 }}
{{ cvDir }} {{ cvFileName }} {{ cvLang }} {{ cvFoldIcon }} ±
GOAL OF THIS FILE {{ cvModelName }} {{ cvTldr }} {{ cvAbout }}
◆ THIS CARD ON THIS FILE {{ cvWhy1What }}: {{ cvWhy1Why }}
{{ l.n }} {{ l.label }}
{{ l.name }}: {{ l.text }}
{{ l.inn.l }} {{ l.inn.count }} callers ▾ {{ l.bw }}{{ l.bwh }} {{ l.n }} {{ l.cmtText }}
{{ l.inn.l }} {{ l.inn.count }} callers ▾ {{ l.bw }}{{ l.bwh }} {{ l.n }} {{ l.caret }} {{ k.t }}{{ k.t }} {{ l.edge.l }}
read-only · edits happen through cards or your editor ▶ chips mark where this file reaches out · every name is clickable
{{ c.label }} {{ c.hint }}
{{ c.mark }} {{ c.stage }} {{ c.t }} {{ c.key }} {{ c.age }} {{ c.chev }}
THIS CARD {{ cvSelStage }} {{ cvSelModel }} {{ cvSelCx }} {{ cvSelEl }} {{ cvSelMicro }}
{{ cvSelFlagL }} {{ cvSelLast }} {{ cvSelAct }}
WHAT IT CHANGED HERE {{ h.what }} {{ h.addTxt }} {{ h.delTxt }}
FILES THIS CARD CHANGED {{ cvSelFilesN }} click to open {{ fl.n }} {{ fl.addTxt }} {{ fl.delTxt }} {{ fl.planned }} {{ fl.chev }}
closed: the conversation lives in the receipt view receipt › show full card ›
CONVERSATION {{ cvSelKey }} full session ›
{{ m.a }} {{ m.t }}
⌘⏎
ELSEWHERE IN THIS PROJECT {{ cvElseN }}
{{ c.mark }} {{ c.stage }} {{ c.t }} {{ c.key }} {{ c.age }} {{ c.chev }}
Select a card. Its changes light up in the code, the why opens here, and open cards take messages.
EXPLAINED BY {{ m.l }} cached per commit re-explain
THIS WORKSPACE {{ wsName }} {{ wsKind }} SETTINGS {{ w.i }} {{ w.l }} ◆ {{ w.src }} {{ w.n }} PROJECTS6
{{ p.n }} {{ p.dirty }} {{ p.live }} {{ p.cards }} {{ p.pct }}
+ Add project
{{ pvSel }} {{ pvDialLabel }} ⊼ {{ pvBranch }} {{ pvAhead }} + New card
/goal {{ pvGoal }} {{ pvPct }} Edit
{{ t.l }} changes save to disk as you make them
AGENTS ON THIS PROJECT{{ pvSesCount }} {{ s.key }} {{ s.t }} {{ s.stage }} {{ s.el }} open ›
WORKING TREE{{ pvDirtyCount }} {{ d.s }} {{ d.n }} {{ d.add }} {{ d.del }} Grid never runs git behind your back. The agent commits at Deliver, or you do it here. Review diff Commit…
CARDSopen on the board ›
{{ k.stage }} {{ k.t }} {{ k.fi2 }}
Autonomyone dial, no other approval settings
{{ d.t }}
At asks at plan: you approve the plan, then it builds all the way to Review without interrupting you. Schema changes still stop for a tap.
SETUP MODEL {{ o.l }} EFFORT {{ o.l }} HOW WORK LANDS {{ o.l }} LOCAL APPS {{ a.n }} {{ a.port }} {{ a.act }}
{{ m.l }}{{ m.n }} {{ memBlurb }}
{{ m.h }}{{ m.k }} {{ m.b }}
Auto-configure this project An agent reads the repo and fills this page in: how each repo builds, tests and starts (discovered, or written to grid.toml), a first context file, the runbook, and the facts worth remembering. It writes a plan first: you approve before anything is saved. last run 6d ago · 12 fields filled See what it changed Auto-configure…
Autonomy {{ d.t }} Everything below inherits from the dial. The safety list can only be stricter, never looser.
STAGE CONTRACTS · WORKSPACE-WIDE Settings › SDLC → What a card must carry is set once for the whole workspace, so a card means the same thing in every project. Add an override here only when this project genuinely differs. {{ ov.stage }} {{ ov.t }} {{ ov.k }} remove + Override a section for this project
{{ g.kicker }} {{ g.badge }}
{{ r.l }} {{ r.hint }} {{ o.l }} {{ r.val }} {{ r.unit }}
{{ m.l }}{{ m.n }} + Add by hand Compact 27 → 12
{{ memBlurb }}
{{ m.h }} {{ m.k }} {{ m.b }} written by the agentpinedit
Workspace settings that belong to the whole workspace, not one project + Build a skill + Add a server Browse registry + Install from file Import from VS Code Export settings
STAGES · 7each arrow: what runs, and what must be true to passContributed by ◆ grid-sdlc-default. Swap that plugin for a four-stage trunk flow or a two-gate regulated flow and this table, and the board, change with it.
{{ r.f }} {{ r.t }} {{ r.trig }} ◆ {{ r.plug }} COMMAND {{ r.cmd }} MUST BE TRUE TO PASS {{ r.ver }}
STAGE CONTRACTS · WHAT A CARD MUST CARRY, STAGE BY STAGE SDLC The seven stages are fixed; the contract inside each is yours. Agents write the sections, you edit them like any text: a card cannot leave a stage until its sections are filled.
{{ sg.k }} {{ sg.scope }} {{ c.l }}
COMMANDS · 3the prompt each stage sends
{{ c.n }}{{ c.used }} {{ c.f }} {{ c.ln }} · {{ c.mod }} · ◆ {{ c.by }}
Commands are files on disk, so they diff and commit like code. Another provider contributes its own set. DEFAULT PROFILE◆ claude-provider Workspace defaults for every new card. A card can be raised or lowered when you create it; a project can pin its own. {{ q.l }}{{ q.k }} {{ o.l }} {{ q.d }}
{{ c.n }}{{ c.f }}Reset to default COMMAND LINE {{ c.cmd }} PROMPT · EDITABLE {{ l }} … {{ c.ln }} total Used by {{ c.used }} in the active SDLC. Change which command a stage calls in Settings › SDLC.
{{ s.n }} {{ s.src }} {{ s.w }} {{ s.uses }} {{ s.pr }}
{{ skName }} {{ skSrc }} Edit SKILL.md Improve with an agent
{{ skWhat }} WHEN GRID REACHES FOR IT{{ skUses }} A card mentions a schema change, a migration, or a column. The agent then follows these steps instead of inventing its own. THE STEPS {{ s.n }} {{ s.t }} FILES {{ f.s }} {{ f.n }} {{ f.d }} ON FOR THESE PROJECTS {{ p.mk }} {{ p.n }} A skill is a folder of markdown and small scripts. Grid reads the description to decide when it applies, so keep that line honest.
BUNDLED · {{ plugBundledN }} Shipped with 0.1.0 and on by default. Core keeps cards, worktrees, rewind and the licence; everything with an opinion in it is one of these.
{{ p.n }} v{{ p.v }} · {{ p.by }} {{ p.tl }} {{ p.d }} {{ p.hooks }} {{ p.cfgL }}{{ p.cfgOpen }} Read from the manifest, so Grid can show these without loading the plugin. {{ c.k }}{{ c.t }} {{ c.v }}
FROM THE MARKETPLACE · {{ plugMarketN }} · BETA Previewed here. The marketplace opens with the public beta; writing and sideloading your own is free on every tier.
{{ p.n }} v{{ p.v }} · {{ p.by }} {{ p.tl }} {{ p.d }} {{ p.hooks }} {{ p.cfgL }}{{ p.cfgOpen }} Read from the manifest, so Grid can show these without loading the plugin. {{ c.k }}{{ c.t }} {{ c.v }}
AGENT & MODEL PROVIDERS {{ pr.n }} {{ pr.d }} {{ pr.s }} Every model picker in Grid lists these. Advice still ranks them by your token profile.
PIPELINE · EVERY ARROW IS A SETTINGwhat each stage change actually runs
{{ pl.f }} {{ pl.t }} {{ pl.trig }} ◆ {{ pl.plug }} edit {{ pl.cmd }}
EXTENSION POINTS · THE STABLE API
{{ h.n }} {{ h.d }}
Plugins run sandboxed and declare what they touch; each grant is per-plugin, like MCP tools. An update that widens its grants asks again.
{{ g.k }} {{ r.l }}{{ r.d }} {{ o.l }}
LANGUAGE INTELLIGENCE{{ liSummary }} {{ t.k }} {{ t.d }} {{ t.m }}
LANGUAGE FILES PARSED SERVER INDEX {{ l.n }} {{ l.fl }} {{ l.s }} {{ l.st }} {{ l.act }} {{ l.ix }}
A language with no server still folds, outlines and highlights: structure never depends on an install. Adding one is a config row, not a release.
KEYMAP {{ o.l }} every command is rebindable · plugins register commands here and get a slot for free
{{ k.c }} {{ k.k }} change
✓ no conflicts · enabling vim-motions would remap 14 keys
SYNC Settings follow your Grid account: this machine and 2 others. Import from VS Code reads keybindings.json and settings.json; nothing is sent until you confirm.
{{ m.n }} {{ m.perm }} {{ m.t }} {{ m.tools }} {{ m.use }}
{{ mcName }} {{ mcTransport }} · {{ mcStatus }} · {{ mcTools }} Logs Reconnect
DEFAULT {{ mcPerm }} {{ mcUse }} TOOLS IT EXPOSES · PERMISSION PER TOOL {{ t.n }} {{ t.d }} {{ t.p }} TEST IT WITHOUT A CARD Run navigate { url: "http://localhost:4000/health" } ✓ 200 in 42ms · screenshot kept A server marked ASK stops the agent and shows you the exact call before it runs. Read-only servers never prompt. Anything a server changed still lands in Recent actions, so it can be undone.
Insights time tracked from agent activity · plan windows are real, dollars are a cost-equivalent Day Week Month Export CSV
{{ h.l }} {{ h.v }} {{ h.s }}
{{ g.l }} {{ g.v }} {{ g.sub }} {{ g.d }}
TODAY · WHEN AGENTS WERE WORKINGeach block is a stretch of activity in that project
{{ h }}
{{ r.n }}
SPEND · LAST 30 DAYS
{{ d.d }}
BY PROJECT · THIS WEEK {{ p.n }} {{ p.v }} {{ p.t }} Hours next to spend, per project. A project with an hourly rate in its setup bills those hours too.
BY MODEL {{ m.n }} {{ m.v }} WHEN THE WEEK RUNS OUT Pause new Smaller model Keep going
Build a skill say what it should do, or point at the code that already does it
WHAT SHOULD IT KNOW HOW TO DO? Whenever a card needs a database change, do it the way we already do it here: never one-way, always with a rollback, and never against anything real without asking me. LET IT LEARN FROM This repo: migrations, CI and the rollbacks in history Closed cards that touched the schema · 4 found A doc or runbook I paste in WHERE IT APPLIES {{ p.mk }} {{ p.n }} A skill is not a prompt you have to remember. Grid decides when it applies from the description, and you can watch it happen in the conversation.
AN AGENT READ YOUR CODE AND DRAFTED THIS 1m 12s · $0.14 {{ s.n }} {{ s.t }} Guarded migration DRAFT Write a schema change that stops for a tap, with a down script and a dry run. {{ s.n }} {{ s.t }} IT WILL WRITE {{ f.s }} {{ f.n }} {{ f.d }} One thing it is unsure about: two older migrations have no down script. Should the skill treat that as the exception, or fix them? Save the skill Keep refining
Account & licence {{ t.l }} jordan@grid.dev · SOLO · 1 seat
Names are placeholders for the alpha. What matters is the shape: one free tier that stays useful, a paid single-seat tier, a team tier that shares the board, and an org tier that can be locked down and run on your own licence server.
{{ t.n }} YOURS {{ t.sub }} {{ t.price }} {{ t.per }} {{ x.t }} {{ t.cta }}
HAVE A LICENCE KEY? ORB-XXXX-XXXX-XXXX-XXXX Activate for air-gapped machines
SIGNED IN ON 3 DEVICES · SOLO ALLOWS 3 a seat is a person, not a machine {{ d.n }} {{ d.s }} {{ d.act }} Signing out remotely takes effect within a minute, or immediately the next time that machine checks in. A device that has been offline past the grace window drops to read-only: you keep every card, board and transcript, agents just will not start.
{{ r.l }} {{ r.v }} {{ r.hint }} WHY THIS IS NOT A NAG SCREEN Grid runs agents against your source, so the licence check is deliberately dumb: a signed token, a device id, and a daily heartbeat. No telemetry on what you build, no reading your repos, and a fortnight of grace if you are on a plane or behind a firewall.
RUN vertex {{ runSrc }} ▶ Start all ■ Stop all ✓ Run all verify steps
VERIFY · WHAT CLOSES THE CARD {{ vrSummary }} Run all verify steps {{ vrDur }} {{ v.mk }} {{ v.t }} {{ v.cmd }} {{ v.res }}
{{ r.n }} {{ r.src }} NOTHING TO START {{ c.verb }} {{ c.cmd }} {{ c.port }} {{ c.act }}
Discovered from each repo, or declared in grid.toml. Review uses start and links the URL on the card; Verify uses test.
{{ runSelName }} {{ runSelState }} port {{ p.l }} {{ runBtn }} ↻ Restart ■ Stop
CMD {{ runSelCmd }} {{ runSelUrl }} ARGS {{ runSelArgs }} saved to grid.toml ENV {{ runSelEnv }} + .env.local
{{ l.at }} {{ l.t }}
{{ runFoot }} Copy log Create a card with this context
REJECT {{ rjCard }}
WHY The agent reads this. Be as blunt as you would be in review. {{ rjWhy }} WHERE THE CARD GOES {{ d.t }}{{ d.stage }} {{ d.d }} UNDO THE CODE WORK {{ rjUndoHint }} {{ u.l }}
{{ rjSummary }} Cancel {{ rjBtn }}
Rewind this session put the conversation and the files back to a point you choose
CHECKPOINTS · NEWEST FIRST {{ r.mk }} {{ r.at }} {{ r.kind }} TOUCHED THE WORLD {{ r.t }} since here {{ r.since }} {{ r.cost }}
WHAT REWINDING TO {{ rwAt }} DOES The session picks up right after “{{ rwText }}” with the working tree exactly as it was then. You can steer differently from there. {{ d.l }} {{ d.v }} REWIND CANNOT UNDO THIS 67 merge requests are already closed on the server. Rewinding forgets that it happened; it does not reopen them. Reopen them from Recent actions first Rewind files & chat Chat only, keep the files A rewind is itself undoable for an hour, and it never deletes the transcript: the dropped rows stay readable under History.
{{ docKick }} {{ d.l }} {{ cardTyI }} {{ cardTyL }} {{ docPath }} Copy markdown
{{ cardTyI }} {{ cardTyL }} card {{ cardTyD }} {{ s.l }}
{{ b.t }}
{{ b.t }}
{{ b.t }}
{{ b.t }} NEEDS A TAP
{{ l.n }} {{ l.t }}
{{ b.t }}
{{ h.l }}
{{ e.ic }}
{{ e.k }} {{ e.at }} DRIFT FROM PLAN REWIND {{ e.t }} {{ e.d }} {{ e.ans }}
{{ r.r }}
{{ fl.n }} NOT IN THE PLAN {{ fl.s }} {{ fl.add }} {{ fl.del }}
Every command this card ran on your machine, in order, with what it did. Anything that changed state outside the worktree is marked, and can be handed back to an agent to undo.
{{ a.at }} {{ a.cmd }} {{ a.res }} {{ a.where }} {{ a.note }} {{ a.undoLbl }}
Put the card back to an earlier moment. The conversation, the files and the memory written after that point all go with it: nothing is left half-rewound.
{{ r.mk }} {{ r.kind }}{{ r.at }} {{ r.t }} WHAT YOU LOSE {{ d.l }} {{ d.v }} Rewind to {{ rwAt }}
{{ rc.rel }} {{ rc.st }} {{ rc.t }} {{ rc.why }}
HOW MUCH IT ASKS · THIS CARD inherited from {{ focusProj }}
{{ d.t }}
{{ dialNote }}
Want to try it yourself? This preview is interactive. Take over and click anywhere: the board, a card, the code view. Yes, let me drive Keep watching
↻ replay the walkthrough
{{ dmStep }} {{ dmCap }}
Getting started I already have a workspace ›
WORKING DIRECTORY {{ gsDir }} Choose… CHOOSE A FOLDER~/ {{ d.n }} {{ d.sub }} Somewhere else… scanning {{ gsDir }} for repositories… DISCOVERED {{ gsCount }} {{ p.n }}{{ p.b }} new folders here become projects automatically · a context file is offered, never required
Grid runs many agents, across many projects, in parallel. The 20-second tour shows the three views, on the real thing.
new cards ask at plan by default, change it later in Settings Skip Start the tour →
Open a workspace Grid asks this every launch
Each workspace is a separate Grid: its own config folder, projects, memory, plugins, settings and licence. Nothing crosses between them, and two can run side by side.
{{ w.n }} {{ w.kind }} {{ w.plan }} {{ w.path }} {{ s.v }}{{ s.l }} {{ w.key }}
+ New workspace Point it at a folder. Grid discovers the projects inside and gives it a config folder of its own.
the last workspace opens on launch · hold ⌥ while starting to land here instead Skip
{{ crumb }} {{ zoomPct }}+ 5 agents live {{ g.l }} {{ g.v }}
THE TOUR · {{ tourG }} · {{ tourN }}skip × {{ tourTitle }} {{ tourLine }} BEST WHEN {{ tc.l }} ‹ Back {{ tourDots }} {{ tourNextL }}
Action history {{ s.l }} {{ ahSummary }}
SHOW {{ k.l }} {{ ahCount }}
{{ r.t }} {{ r.k }} {{ r.cmd }} {{ r.card }} {{ r.out }} {{ r.exit }} {{ r.dur }} {{ r.ul }} {{ o.t }} CARD CREATED IN PREPARE {{ r.madeL }} Open the card →
AUDIT Every command an agent ran, with its output and a way back. Kept 7 days on Free and Solo; Crew keeps 90 days across the team, Fleet keeps it as long as you say and exports it signed. Export
Choose a workspace Back to {{ wsName }} You pick a workspace once, when Grid starts. Each one is a separate installation in every way that matters: its own config folder on disk, its own projects, settings, memory, plugins, keymap and licence. Nothing is shared and nothing crosses over, so a team workspace and a personal one can run at the same time as two independent applications.
{{ w.n }} {{ w.kind }} {{ w.plan }} CODE{{ w.path }} CONFIG{{ w.cfg }} {{ s.v }} {{ s.l }} {{ w.note }} {{ w.btn }} New window {{ w.key }}
New workspace Point it at a folder. Grid discovers the projects inside, offers each one a context file, and creates a config folder of its own. It starts at factory defaults: nothing is inherited from the workspaces above. Choose a folder… Join a team workspace
the last workspace opens on launch · hold ⌥ while starting to land here instead · opening a second one runs a second Grid Manage workspaces
Report a problem NOTHING SENT YET You send this, not Grid. Read it, cut anything you want, then mail it or copy it.
WHAT BROKE {{ rpErr }} {{ rpAt }} WHAT GOES WITH IT {{ a.mk }} {{ a.l }}{{ a.sz }} {{ a.d }} THE SCREENSHOT, AS IT WILL LOOK TEXT REPLACED, LAYOUT KEPT Every glyph is measured and replaced by a bar of the same width, in the same place. We see the shape of what you saw, never a word of it.
THE EXACT MESSAGE {{ rpRedacted }}
{{ s.t }}
Highlighted runs are what obfuscation removed: card text, project and file names, code, anything from your session.
to bugs@gridconsole.dev · leaves your machine only when you press one of these Cancel {{ rpCopyL }} Open in your mail app ↗
SEND BACK {{ rvmFile }}
{{ m.t }} {{ m.d }} {{ sbNoteLabel }}{{ sbNoteHint }}
{{ sbSummary }} Cancel {{ sbBtn }}
REVIEW CHANGE {{ rvmN }} / {{ rvmTotal }} {{ rvmS }} {{ rvmFile }} {{ rvmDesc }} {{ rvmAdd }} {{ rvmDel }}
FILES · {{ rvDecided }}
{{ s.mk }} {{ s.n }} {{ s.add }} {{ s.del }} {{ s.state }}
{{ rvDoneNote }} Approve review
{{ l.n }}{{ l.t }}
Send back… Skip ✓ Approve & next
{{ fileDir }} {{ fileName }} {{ fileBadge }} {{ fileLang }} {{ fileAdd }} {{ fileDel }} Open in the code view →
{{ t.l }} Diff Whole file
{{ fileNote }}
{{ l.n }} {{ l.mark }} {{ t.t }}
j / k to move · ⌘↵ approve the card · esc closes Comment on a line Ask the agent about this file
{{ tmOk }} {{ tmName }} {{ tmStat }} ran in the card’s sandbox
INPUT
{{ tmTarget }}
OUTPUT{{ tmStat }}
{{ tmOut }}
the full transcript lives in the Terminal view · ⌘\ Copy output Re-run ↻
New card say it in your own words, Grid files it
◉ hold to talk0:14 transcribed + Attach or drop a screenshot
GRID FILLS THE REST IN {{ w.l }} Describe the task above and Grid reads the project, the card type, the model and the effort out of it, and checks whether an open card already covers it. Every guess stays yours to change.
PROJECT{{ capGuessProj }} {{ p.n }} {{ p.pct }}
WHEN IT STARTS {{ capStartMk }} Start immediately {{ capStartNote }}
Partner-facing API plus a DB migration: Grid advises Fable at high effort. Everything below is its guess, and yours to change.
CARD TYPE{{ capGuessType }} {{ t.ic }} {{ t.l }} {{ t.flow }} {{ capTyExL }}. {{ capTyExD }} {{ st.l }}
MODEL{{ capGuessModel }}{{ capMoreLabel }} {{ m.l }} {{ m.cost }} {{ m.d }} PIN AN EXACT VERSION {{ m.l }}
EFFORT{{ capGuessEffort }} {{ e.l }} {{ capEffortNote }}
AUTONOMY{{ capDialNote }} {{ d.t }} {{ d.stops }}
{{ k.kicker }} {{ k.t }} {{ k.action }}
{{ capSummary }} Save as draft Create card⌘⏎
1b First run. One screen: point Grid at your working directory: every repo inside becomes a project, automatically. No purpose fields, no test commands, no autonomy dial: new cards ask at plan until you say otherwise. A spotlight tour then plays on the live app itself: one line per view, no reading homework.
Getting started one folder · no questions
WORKING DIRECTORY ~/work Choose… DISCOVERED 3 vertex main · clean atlas-docs main · clean billing-service main · 2 ahead new folders here become projects automatically
Next: a 20-second tour plays on the live frame: Board, Session, Code. One spotlight, one line each.
Defaults are set: new cards ask at plan: the agent waits for your OK before it builds. Tune it per project later, in Settings. ●○○○ Skip the tour Start the tour →
▶  Play the tour, live on the app frame spotlights the real Board, Session and Code: one line each, skippable anywhere
Every surface, and how to reach it The frame above is live. Everything below is one click away inside it.
BOARD · NEEDS YOU What is waiting on you The board opens first and calls out what needs you: the WAITING ON YOU chip up top, a badge on every card that is asking, and a while-you-were-away line after time off. TRYIt is the first screen. Click any card: its session opens as a modal on top of the board.
BOARD Seven stages, every card The whole fleet at a glance: what is queued, building, waiting, shipping. Blocked cards are dashed, scheduled cards show their time, and each card says who is doing it. TRYClick Board in the tab bar. Cards with a badge are clickable.
CARD · CONVERSATION What the agent did, in plain rows Not a terminal. Every tool call is one line: what it ran, on which file, how big the result was. Click any file to read the diff. Toggle to the raw terminal if you want it. TRYSessions tab, or any board card. Click a row that names a file.
CARD · THE PANEL The right side follows the stage Prepare shows the plan with Approve. Doing shows files changing and the task list. Review shows what shipped and the commit. Verify shows the checks. Closed shows the receipt. TRYOpen cards at different stages from the left rail.
PLAN + CARD DOC The full document, not a summary ⌘ Open card gives you the card as markdown: what you asked, where it stands, the open question, the files, the history. A second tab holds the plan the agent wrote. TRYClick ⌘ Open card in the panel header.
FILE DIFF Any file, with real highlighting Line numbers, +/- gutter, syntax colours, and one line on why the change is shaped that way. Sibling tabs are the other files this card touched. TRYClick a file name anywhere: conversation, plan or panel.
CODE The repo, with AI in the margin Agents change a lot of code. Here you read it without leaving Grid: tree, highlighted source, and a right pane that says what the file is for, who changed it and why, which cards touched it, and what it talks to: by Haiku or Sonnet, cached per commit. TRYClick Code. Pick a file, then a symbol chip: the explanation follows it.
REWIND Put the session back Checkpoints are the prompts you sent. Pick one and Grid shows what it drops, what it restores and what it cannot undo, like MRs already closed on a server. TRYClick ⟲ Rewind in the card header, or the ⟲ on any message.
CAPTURE One field, no form Type or hold to talk. Grid reads the project out of your words, picks the stage, advises a model and effort for the task, tuned by your token profile, and warns you if you asked something similar before. TRYClick + New card in the menu bar.
SETTINGS · PROJECT What is happening in this repo Agents running on it, the working tree with uncommitted files and a commit action, and every card by stage. The goal line sits above it all. TRYClick Settings, then a project in the rail.
SETTINGS · SETUP Auto-configure, then nine groups An agent reads the repo and fills the page in: commands, a first context file, the runbook. Then agent, code, commands, verification, delivery, safety, notifications, budget, schedule, memory. TRYProjects → Settings. Start with Auto-configure.
SETTINGS · MEMORY What the project knows Facts, your decisions, the runbook and the environment. The agent reads these before it plans, so a wrong line here is worth fixing. TRYProjects → Memory.
WORKSPACE · SKILLS How your agents do things here A skill is a folder of markdown and small scripts. Grid reads the description to decide when it applies, and shows you the steps it will follow. TRYProjects → Workspace → Skills.
SKILL BUILDER Describe it, an agent writes it Say what it should do, point it at the repo or at cards that closed well, and it drafts the skill: steps, files, and the one thing it is unsure about. TRYProjects → Skills → + Build a skill.
WORKSPACE · MCP What agents are allowed to reach Servers with a permission per tool: allow, ask or block. Test a call without a card, read the logs, and see why a server is trusted less than another. TRYSettings → Workspace → MCP servers.
WORKSPACE · PLUGINS A platform, not just an app Six stable extension points: stage transitions (what each arrow runs is a setting; a plugin can take a stage over), model providers, panel slots, right-click items, commands, bundled MCP servers. Sandboxed, with per-plugin grants. TRYSettings → Workspace → Plugins. Every pipeline arrow shows the command it runs.
WORKSPACE · IDE SETTINGS Editor, keymap, languages Font, theme, indent guides, AI-note defaults, language intelligence for every file type, terminal, and a full keymap with presets (VS Code, IntelliJ, Vim) where every command, plugin commands included, is rebindable. TRYSettings → Workspace → IDE settings. Right-click in Code for the extended menu.
INSIGHTS Time and spend, one page Hours are tracked from agent activity, not timers. Plan windows are real percentages; money is a cost-equivalent so you can see what is eating the week. TRYClick Insights.
ACCOUNT · LICENCE Sign-in, plans, devices, security Four tiers, a licence key for air-gapped machines, remote sign-out per device, and a plain list of what Grid sends home: never your code. TRYClick the avatar in the menu bar → Plans & licence.
1e Sign in, and what a licence buys. Grid runs agents against your source, so the licence check stays deliberately dumb: a signed token in the keychain, a device id, a daily heartbeat, fourteen days of grace. Sign-in screen on the left; the account chip in the menu bar opens Plans & licence with Plan, Devices and Security.
Sign in to Grid
Your licence lives with your account, not this machine. Signing in happens in your browser: Grid never asks for your email or password, and never sees them.
YOUR CODE {{ siCode }} gridconsole.dev/activate expires in {{ siTtl }}
Open the browser to finish Waiting for the browser. This window signs itself in the moment you approve the code. Use a licence key instead for air-gapped machines device {{ siDev }}
THE FREE PLAN Free forever For individuals and personal projects: unlimited projects, all core features, as many agents as your machine can run. Commercial use up to 60 days. HOW THIS SIGN-IN WORKS 1Grid opens the activate pageWith the code already filled in.2You sign in thereEmail link, GitHub, Google, or SSO on Crew and Fleet.3This window picks up your planGrid polls until you approve, then keychains a signed token. Nothing to paste back. WHAT GRID SENDS HOME A device id and a plan id The Grid version you are running Never your code, prompts or transcripts Never your model keys Signed token in the macOS keychain. Offline for 14 days keeps working; after that Grid is read-only until it checks in.
1c Phone. Four screens, the same verbs as the desktop: see what needs you, watch the board, decide, capture. A plan is fully approvable from bed: steps, the open question, one green button. 390×844, shown 1:1.
9:41
Grid ● 5 live
Needs you 3 top-down
Needs you 3 Running 2 Done 6
{{ a.kind }} {{ a.proj }} {{ a.age }} {{ a.title }} {{ a.why }} {{ a.act }}
2 more are moving on their own · 6 closed today
{{ n.i }}{{ n.l }} {{ n.i }}
9:41
Board 18 open Filter
{{ s.l }} {{ s.n }}
{{ c.p }} {{ c.k }} {{ c.live }} {{ c.t }} {{ c.stage }}
Swipe a card right to move it a stage on · long-press to reassign
{{ n.i }}{{ n.l }} {{ n.i }}
9:41
PREPARE Add per-key rate limits
THE PLAN · 4 STEPS Per-key quotas with a token bucket in Redis. 6 files, one guarded migration.
{{ s.n }} {{ s.t }} IT ASKS {{ planAsk }} 60/minUnlimited
Approve: start building Revise Read the rows
9:41
New card draft saved
Partner keys have no rate limit at all. Work out where a limiter belongs and propose something before touching the DB.
0:14 hold to talk, release to file + Attach
PROJECT · READ FROM YOUR WORDS vertex94% northwind all 6 ▾
YOU ASKED THIS BEFORE “Rate limit the public API” · closed 3 weeks ago Open it instead
Investigate and write a plan first: you approve before any code changes.
Draft Create card
1d 4K wall. No separate wall app: this is the console itself, embedded twice at true 4K, portrait and landscape, base text size raised for distance. Both are live: click cards, switch views, open a session. Clicking a card opens it in place, in the session view.
PORTRAIT 4K · 2160×3840 at 100%, the real console, live
LANDSCAPE 4K · 3840×2160 at 100%, live

Try next: “open the board on a phone” · “show a stalled agent in the attention inbox” · “design the Grid icon”