Follow one commitment — User Auth — from first pitch to retro. You'll see exactly where your normal workflow becomes Heliostat's input, and where it doesn't.
anytime · daily
during cooldown
start of cycle
daily, for weeks
1–7 days after cycle
Heliostat is a GitHub App with three narrow permissions: repository metadata (read-only), repository contents (read-only — required by GitHub for push events to be delivered), and your email address. No issue, PR, or deployment access; we only read what the push event sends us — never the file contents. Install it on only the repos you want to hand to Heliostat — organizations and individual accounts both work. Push events flow to a single app-wide webhook; Heliostat matches commits to your scopes automatically. Uninstall any time from your GitHub account settings.
Before a pitch, there's just an idea. /think is a per-user mind-map for those — raw thoughts, references, screenshots, half-formed plans — with no cycle pressure.
Each note is a markdown document with a title and body. Bodies support #tags, [[wikilinks]] between notes, folders for grouping, image attachments (paste or drop), inline image comments, callouts (> [!note], > [!warning]), tasklists with checkboxes that toggle in place, and YouTube embeds. Bare URLs auto-resolve to the page's title once Heliostat fetches it. Hit /think/daily for an auto-created note for today's date.
Type [[note title]] and Heliostat creates an edge to the matching note. Backlinks render in the right pane. Switch to the graph view to see the whole map at once and drag notes around. Edges aren't typed — just "these are related" — so you don't have to taxonomize anything.
When a knot of notes starts to look like a real idea, lasso them on the canvas and click Extract. Heliostat hands those note bodies to OpenAI to draft a Pitch you can shape next — the source notes stay where they are.
Per-note: flip Share on a note to mint a /u/<your-github>/n/<id>/<key> URL only people with the link can resolve; revoke it instantly by toggling Share off. Whole map: Export downloads a .tar.gz of one .md per note, folders preserved as directories. Notes also keep version history — restore an earlier version from the editor menu.
Before you commit weeks, draft a pitch: name the pain, pick a t-shirt size, sketch the solution, surface risks. Pitching is where bad ideas get caught cheaply.
Five fields, one page. Heliostat auto-saves as you type and gates the "Mark ready" button on a readiness checklist — problem, solution, rabbit holes, and no-gos all have to be present before a pitch can be committed to. An optional "Other notes" field catches everything that doesn't fit above. "Ask The Senior" is available from the moment you open a pitch — it'll flag shallow pitches before you commit.
The pain. Not the fix.
Broad strokes. Precise = building.
Where could you get lost?
Extras that don't fit above — links, references, constraints.
Pick the pitches. Assign each a short tag. The decision ritual matters even when the only stakeholder is you — don't drift into work.
Heliostat lists every pitch you marked ready. Click "Commit" on the ones you'll run this cycle — one XL, or a few Ms and an L, or four Ss. Whatever mix fits the cycle. Each committed pitch needs a scope tag: any short word that'll link future branches and commits back to it.
Any short word. No required prefix — auth will match branches like feat/auth-oauth, bug/auth, and commits like fix(auth): ….
Ship. Every day you move the dot; every push flows into the right scope. Stale scopes flag themselves, interruptions log themselves, and the hill chart keeps you honest.
Work the way you already do. A push to feat/auth-oauth matches the tag's branch pattern; a quick fix committed straight to main still matches if the commit message names the tag.
The direction marker comes from the type prefix (feat / spike / explore / wip / poc read uphill; fix / test / refactor / chore / docs read downhill). It's a second opinion for your next check-in — the hill chart doesn't move on its own.
A pager goes off. You push hotfix: pager timezone bug to main — no scope tag in the branch, no tag in the message. Heliostat doesn't lose the commit; it logs it as unplanned work at 0.5h (estimated) so you don't forget to account for it. Tap the hours to fix them later.
Logged via ⚡ · informs next cycle sizing
Dashed border = estimated, still needs your confirmation.
Every day you move the dot — a small, honest adjustment. Under each scope, Heliostat shows a unified history of your check-ins and recent commits, each tagged uphill or downhill, so you can calibrate. A second opinion, never a verdict.
a3f842
fix(auth): expired refresh
downhill
a3f611
feat(auth): wire callback
uphill
Check-ins and commits interleaved. The arrows on commits are the second opinion — the percentage pills only move when you move the dot.
~ and cut.
Prefix a scope's title with ~ when it's a nice-to-have. It still shows up and gets worked on — but when the calendar runs out, nice-to-haves are first to cut. Cut manually anytime; the hill chart keeps the trace, and the cut scope comes back as a fresh raw pitch with the pitch fields copied over so nothing's lost.
Cut scopes move back to the pitch list as raw drafts — title, problem, solution, rabbit holes, and no-gos all preserved. Re-pitch next cooldown, re-commit next cycle, or let them go.
No feature work. Fix lingering bugs, update dependencies, jot rough ideas for next cycle — and run the retrospective. All on one page. Close cooldown when you're done; only then does a new cycle start.
An idea scratchpad lives on the cooldown page — rough notes for next cycle, captured while they're fresh. Promote an idea to a pitch when it's ready and Heliostat drops you into a raw pitch with the first line as the title and the full body parked in the notes field, ready for you to break out problem, solution, and rabbit holes.
Seeds. Promote to a pitch when ready.
Better onboarding flow — single-step project tracking after sign-in
Offline dashboard support
Public API docs?
The retro is a guided conversation, not a form. The coach reads the cycle first — what shipped, what stalled, what interrupted — then opens with a pointed observation and takes three to five short turns with you. When a lesson surfaces, it proposes the wording and you save it in a click. Interruption % over 15% signals the next cycle should be shorter — or have more buffer. Unfinished scopes hit the circuit breaker: re-pitch and re-commit, or let them go.
You shipped User Auth and Billing portal, and Onboarding tour stalled at 28% for two weeks before you cut it. What kept you from cutting it sooner?
Kept thinking it was one more evening. It never was.
It had the ~ marker the whole time. If a nice-to-have doesn't move for a week, is that a carry or a cut?
A cut. Carrying it was optimism, not a decision.
A nice-to-have that hasn't moved in a week is a cut, not a carry.
A nice-to-have that hasn't moved in a week is a cut, not a carry.
The conversation persists on the cycle, so closing the tab mid-retro keeps your spot. Saved lessons collect on the cycle's cooldown page and your Lessons index — a record of what you learned — and the retro thread archives when the cooldown closes.
Re-evaluate. Cut once = look harder the second time.
Click carry-forward and the scope becomes a fresh raw pitch — title, problem, solution, rabbit holes, and no-gos copied over — and the scope is cut from this cycle.
~ marks nice-to-haves; cut whenever you need to.Everything else — deciding the t-shirt size, moving the dot, cutting scope, writing the retro — stays with you. That's the whole point.
Start free. Upgrade to Solo when you're ready for unlimited projects and AI personas.
Cookies
Heliostat uses a few essential and functional cookies (sign-in, timezone, this notice) and no analytics or ad trackers. Details in our Privacy Policy.