✦ Polaris OS
Roadmap · 20 Oct 2026

Polaris OS · where we are, and what comes next

All fourteen slices of the plan are built on the branch feat/polaris-os, including identities, desks and zones, which landed overnight with the Plane takes, the orb and the new Work list. Each part was tested on its own against the local stack. The full suite has not run across everything since 17 Oct; that run is first tonight. Nothing is on the production Polaris project. Before anything goes live, we need a staging copy you can click through, a real run on your RunPod model, and your go on eight decisions below.

Built on branch
Slices 1 to 14
Plus eight lanes from the night of 20 Oct. 31 migrations, 91 test files.
Verified locally
Per part, not all together
Last full run 17 Oct: 696 pass, 0 fail. The integration run across tonight's work is next.
Staging
Starting tonight
A separate Supabase project, Fly app and Pages site. Never the live project.
Live
Nothing yet
The production project ljcsutovfeviwdufhfyu has not been touched.

Hosted today: only this tour site and its demo video, at polaris-os-tour.pages.dev.

01 · DONE

Built and tested on the branch

"Built" means the migration, runtime and screens exist, with tests that passed when the work was committed. It does not mean anyone has used it on real data. Slice 0, the go-live itself, is the only slice still open, and it waits on you.

#SliceStateWhat is true today
00Go-live for the internal pilotWaits on youRunbook in GO-LIVE.md. No step has run on live. The runbook still lists migrations up to 17 Oct; tonight's seven are added after the integration run.
01Store splitBuiltOne 2,337-line store became seven slices. Same 129-key shape, views untouched.
02Today across orgs, closing a deliveryBuiltOnly a person moves work to done. Accept credits hours, reject bills zero and reopens with your note.
03Shell and railBuiltHQ, Work and Chat in one shell. Hiring only through the Chief of Staff, ending in a role card you accept.
04Mind filesBuiltVersioned .mnd files replace skills, instructions and goals. One resolver in SQL. Editor in HQ.
05DispatcherBuiltOverride, rule, shortlist, Chief of Staff, then one question to you. Now labelled ✦ AI AutoAssign in the picker.
06Model gateway and Models pageBuiltRungs, no spill, data ceilings, monthly budget soft stop, eval script. A native RunPod provider since 20 Oct.
07Events, Activity, NotifierBuiltOne log with cursors. Notifications respect 11:00 and 16:00 windows and quiet hours.
08Chat v1BuiltChannels, threads, DMs, workers as members. No Slack read-in, reactions, pins or files yet.
09Awareness, Patrol retiredBuiltWatches, budgets, depth cap, storm breaker. Watches are edited in the worker's Mind file; there is no separate tab.
10Projects, Portfolio, MapBuiltAreas and projects, DRI, criteria, close with retro. Map shows gaps, now including blocked chains.
11Workforce Pulse v0BuiltDelivered hours, cost per accepted hour, critic first-pass, rework, lost asks.
12Identities, the first external effectBuilt 20 OctGrants, approvals, one effect gateway, Intake, worker email out via Resend, WhatsApp adapter. No real mail domain yet.
13Desks and egressBuilt 20 OctOne machine per worker, default-deny egress, gateway-held browsers. Tested on the local driver; the Fly driver needs a token.
14Zones, workflows, chainsRuntime builtWorkflow files, admitted chains, envelopes, Stop, playbook criteria. The HQ › Zones page was not yet committed at 05:00.

The night of 20 Oct, lane by lane

A

The Plane takes

Select a line in a doc and make it a task, with a chip on the line and the page's task list. An open question with a name on it shows up in that person's Today. ⌘K palette with verbs. Project updates drafted by the Chief of Staff on Portfolio and the goal. A change the model makes arrives as cards you confirm.

Migrations 20261020000002, 000003
B

Blocked-by edges (graphs step 1)

A Blocked by picker in task detail, a badge on rows, blocked chains on the Map. No cycles, edges close and are never deleted. Finishing a blocker lifts the blocked task in Today and wakes its owner.

Migration 20261020000004
C

Identities and Intake (slice 12)

Identities, grants, durable approvals and an action log. Outside requests wait in Intake for accept, decline, snooze or duplicate. Every send goes through one effect gateway and shows up in Today as an Approve item. Inbound mail is marked untrusted.

Migration 20261020000005
D

Desks and egress (slice 13)

A machine per worker, a default-deny egress gateway, browser profiles held by the gateway, not the desk. HQ › Desks shows a terminal mirror, the egress log and owner controls.

Migration 20261020000006
E

Zones and chains (slice 14)

Workflow Mind files are parsed and validated with line numbers. Chains are admitted by the scheduler, step by role, pause at 80% of budget, and stop at a step boundary. Playbook criteria become musts the critic checks.

Migration 20261020000007 · HQ page uncommitted
F

RunPod provider and fixes

The gateway calls RunPod natively. Chat and hiring run on the gateway config, so no Anthropic key is required. Fixed: the Mind files loading flash, raw <@uuid> in Activity, and the read-only Doc tab.

The real run on Qwen and LIVE-RUN.md are still to do
G

Work list, Plane-style

A full-width list with columns, grouping and j/k keys. Task detail gets a properties panel and Activity, Comments and History tabs. The assignee picker offers ✦ AI AutoAssign, where the Chief of Staff decides.

No migration
H

The Chief of Staff orb

A floating orb you can drag. It snaps to an edge, remembers its place, opens with a click or ⌘J and shows idle, thinking or needs-you with a count. It opens into the conversation with the view as context.

No migration · icons on every verb and state

How sure are we: every lane ran its own tests green before committing. At one point tonight the local VM hit a load average of 413, and a few database cases timed out in combined runs, then passed alone. That is why the integration run comes first.

02 · NOW

Tonight and the next 48 hours, no decision needed

Paquito runs these alone. None of them touch the live project. Each one ends in something you can open.

Clean integration run

Rebase every lane, tsc, next build, replay all migrations on a fresh local database, then the full suite once.
Done whenThe full suite is green across all 91 test files, with the numbers in the build log.

Demo video v2, one ask end to end

Follow one request from Intake through AI AutoAssign, the worker's desk, the critic and an Approve item, to you closing it in Today. Captions and voiceover.
Done whenThe MP4 replaces the 19 Oct video at the top of the tour.

Staging cloud

A new Supabase project, a new Fly app for the runtime, the web app on Cloudflare Pages through zeroship. Seeded orgs, same data as the demo.
Done whenYou can sign in at a staging URL and click through every slice. The live project stays untouched.

A real run on RunPod Qwen

One real task through the gateway on your Qwen endpoint, from claim to delivery to critic, with screenshots. If the endpoint is cold, the job waits; it never spills to another provider.
Done whenLIVE-RUN.md shows the run, its cost and anything that broke.

Product pages refresh

The public product pages updated for what exists now, on a preview URL only.
Done whenA preview link is ready for you to read. The apex domain waits for decision 8.
03 · NEXT

What needs your decision

Eight yes-or-no calls. Each has the answer Paquito recommends, why, and what it unblocks. Nothing here moves without your go for that specific step.

1. Apply the security migration on live, alone, now?

Three holes in the app that is live today: any signed-in user can read and write other orgs' Inbox-task comments, can make themselves owner of an org whose id they know, and any member can promote themselves. The fix is 20261016000007_security_fixes.sql, tested on the branch, applied in one BEGIN/COMMIT and probed with a second org's token before and after.

Unblocks: nothing else depends on it, which is the point. It is safe to do first and on its own.

Default
Yes
This week, 20 minutes with you.

2. Take the TPS pilot live in the order of GO-LIVE.md?

Pre-flight, then repairs, then the migrations one file at a time, with the runtime, edge functions and web deployed in the windows the runbook names. Paquito's opinion: two windows. First the 17 Oct set (slices 0 to 11), awareness off. A week later the 20 Oct set (12 to 14), with every external action set to ask first.

Needs first: decision 1, a green integration run and a week on staging. Unblocks: real use, the pilot numbers and the RunPod eval.

Default
Yes
First window week of 27 Oct, step by step with you.

3. Put worker email on our own domain (Cloudflare in, Resend out)?

The alternative is AgentMail. Our own domain is cheaper and we control deliverability. The plan's working name is polarismail.co; we have not checked it is free or bought it. Mail records are never proxied.

Unblocks: the first real external effect (slice 12), then WhatsApp for Adi at PTP.

Default
Yes, own domain
You pick the name. Paquito sets DNS.

4. Give a Fly token for real desks?

Desks run on a local sandbox in tests. Real workers need real machines, one per worker, on Fly. A separate app and a token scoped to it, with a spend cap. Fly billing has blocked us before on ControlTower, so the account limit needs checking too.

Unblocks: desks on staging, then zones that run code.

Default
Yes
For staging now. Live after the first pilot window.

5. Run the 30-task RunPod eval before moving work off Claude?

The pilot runs work on Claude as an explicitly chosen rung. scripts/eval-rung.ts replays 30 delivered TPS tasks through the RunPod Execute rung and grades them. Execute moves to RunPod only if it lands within 5 points of Sonnet. The script never flips anything on its own.

Needs first: about 30 real deliveries from the pilot, so roughly two pilot weeks.

Default
Yes
Eval in the week of 10 Nov. Flip only on your go.

6. Build graphs steps 2 and 3?

Step 2 gives workers a small slice of the graph as context, behind a per-org switch that stays off unless the eval shows it helps (3 days). Step 3 adds affinity to routing and a taint walk, so a delivery that read outside mail can be traced and flagged (3 days). Step 3 matters before outside mail is on in live.

Needs first: step 2 needs the eval from decision 5. Step 3 needs nothing.

Default
Yes to 3 now
Step 2 waits for the eval numbers.

7. Fix GitHub Actions so CI runs again?

Every push since 18 Oct ends in startup_failure after 0 seconds. That pattern usually means a billing or spending limit on the account, not the workflow; we have not verified it. Until it runs, the only test gate is the run on the local VM.

Unblocks: an automatic check on every push before anything merges to main.

Default
Yes
You check GitHub billing. Paquito does the rest.

8. Point the polarishq.co apex at Namecheap?

The product site build is ready but not deployed, and the apex domain step at Namecheap is the one thing it waits on. It does not affect the app.

Unblocks: the refreshed product pages on the real domain.

Default
Not yet
After you have read the preview from Now, item 5.

Already settled, so not on this list

Mobile stays FlutterChat-first, in Phase 4.
Web and desktop in TypeScriptDesktop is Electron.
Data stays on RunPodWhen it is cold or full, jobs wait. Nothing spills.
Chat provider per orgEach org picks and carries the cost.
Billing is experimentalCalled Effort. For now we only track cost.
Hiring only through the Chief of StaffNo add-worker form.
Opinionated productThree to five knobs a setting, not dashboards to build.
04 · LATER

After the pilot holds

Phase 4 starts once TPS has used Polaris for a few weeks and the numbers hold: no lost asks, a median of two rounds or fewer, at least 60% critic first-pass.

  • Other orgs. PTP, Setpoint and the rest, one at a time, each with its own chat provider and budget.
  • Mobile, Flutter, chat-first. The Chief of Staff, Today and Chat on the phone. Work and HQ stay on web and desktop.
  • Mind packs. Shared Mind files across orgs, owned by your account, subscribed per org.
  • polaris-core under Apache 2.0. The open core, released once desks and the gateway are proven on our own orgs.
  • Launch. External customers. The eval set grows from 30 tasks to 120 first.
  • Desktop app, Electron. The same web code in a window, with the orb and notifications native.

Also parked: Signals and Pulse's business layers, Group scope selectors, contractors and subagents, Slack read-in, reactions, pins and files in Chat.

05 · BY WEEK

The next six weeks

Calendar weeks from Tuesday 20 Oct. These dates assume the decisions above come on the default. Each week where you say no or later moves everything after it.

20 – 26 OCT
Integrate and stage
  • Integration run, full suite
  • Staging cloud up
  • Real run on RunPod Qwen
  • Demo video v2, product preview
  • Security migration on live
  • Email domain, Fly token, CI billing
27 OCT – 2 NOV
Pilot window one
  • Go-live of slices 0 to 11 for TPS
  • Pilot week 1, daily report
  • Graphs step 3
  • Worker email on staging
3 – 9 NOV
Pilot window two
  • Go-live of slices 12 to 14, ask first
  • Pilot week 2
  • Desks on Fly, staging
  • Fixes from pilot use
10 – 16 NOV
The eval
  • RunPod Execute eval, 30 tasks
  • Move Execute to RunPod, if within 5 points
  • First real email from a worker
  • Graphs step 2, behind the switch
17 – 23 NOV
External effects
  • WhatsApp for Adi at PTP
  • Desks live for one worker
  • Phase 4 go or hold
24 NOV ONWARD
Phase 4
  • Second org
  • Flutter mobile, chat-first
  • Electron desktop
  • Mind packs, polaris-core
Paquito builds Needs your go Measured on real use
06 · WHAT BLOCKS WHAT

Dependencies

Amber is a decision of yours. Green is the outcome it leads to. The security fix is outside every chain on purpose.

Integration run→ Staging, one week→ Go-live window one→ Pilot weeks→ TPS on Polaris The pilot is the source of everything measured: lost asks, rounds, first-pass, cost per accepted hour.
Pilot weeks→ 30 real deliveries→ RunPod eval→ Move Execute to RunPod→ Work off Claude The eval replays real deliveries, so it cannot run before the pilot has made them. Graphs step 2 rides on the same eval.
Email domain→ Worker email on staging→ Graphs step 3, taint walk→ Go-live window two→ Adi on WhatsApp Outside mail is untrusted. The taint walk should be in place before any worker reads real outside mail on live.
Fly token→ Desks on staging→ Zones that run code→ Desks live Until then, desks and chains run on the local sandbox only.
CI billing→ Tests on every push Blocks nothing in the product, but until then every test run is by hand.
Product pages preview→ polarishq.co apex→ Product pages live Marketing only. The app does not depend on it.