local-first · no account · no streaks
The useful signal isn't progress. It's silence.
goaldrift counts the days since you last wrote anything about each goal, sorts your list by that gap, and puts the one you have been quietly avoiding at the top. You never update a percentage, because there isn't one.
Free. No sign-up screen — the link goes straight into the app.
Ship the beta to ten testers
the problem
A progress bar is a thing you maintain.
Every tracker asks you to keep a number honest. So the number stops being about the work and starts being about the last time you felt like updating it — which is exactly the moment it stops being useful.
a progress bar
Still 60%. It has been 60% since the last time you moved it there by hand.
the same goal, in goaldrift
Nobody typed that number. It is the distance between today and the last thing you wrote.
A percentage is a claim you have to keep making. A gap is a fact that accumulates whether you look at it or not.
how it works
28 days, today on the right.
Every goal carries the same small chart. There is nothing to configure and nothing to fill in — it is drawn entirely from the notes you have already written.
- a bar
- A day you wrote something down.
- a taller bar
- More than one entry that day. Two lines beat one.
- a hairline
- A day you didn't — but before the silence started counting.
- the dotted run
- The gap since your last note. It holds off for the first three days, then starts drawing.
The number the dots end in runs the whole app. It decides the goal's state, and it decides where the goal sits in your list.
the order
The order is the opinion.
You cannot drag this list. Goals were added in whatever order they occurred to you; what you see is what the sort decided, and the quietest thing is always first.
- Ship the beta to ten testersStalledBlocked 19 days19 days quiet
- Get through the Spanish B1 bookStalled12 days quiet
- Run 10k without stoppingEasing off6 days quiet
- Build the shelvesMoving
- 0–3 days quiet
- Moving
- 4–7 days quiet
- Easing off
- 8+ days quiet
- Stalled
getting going again
Three things put a goal back to zero.
Each of them resets that goal's clock and drops it down the list. None of them asks you to estimate anything.
- Write a noteOne line about what you did, or what you found out. It draws a bar on today.
- Tick a stepTicking logs it for you, so the chart fills as a by-product of working rather than as a second chore.
- Clear a blockerGetting unblocked is progress, and it counts as progress. The toast says so, because the list moves.
the one ai feature
It has to quote you back.
Unstick this reads one goal — the notes, the steps, the open blocker — and returns 3 moves of 30 minutes or less. Every answer carries a line copied verbatim out of your own log, so you can tell at a glance whether it actually read anything.
Ship the beta to ten testers
waiting on someone
You aren't stuck on the work, you're stuck on one person — and in nineteen days you have chased them exactly once. The goal has quietly become somebody else's queue.
Still no build. Chased Priya on Slack.
Reply on the same Slack thread with a date and a fallback: if the signed build isn't through by Thursday, five testers get an unsigned one.
10 min
Send the invite email to the twelve names with that Thursday in it, so the build has something to be late for.
20 min
Write one line on what shipping looks like if the build never arrives.
15 min
It runs on your key
Add an OpenAI key in Settings and it stays in that browser, goes to our route in a header, is used once, and is never written down server-side. OpenAI bills you directly.
It is one button
No chat window, no assistant, no daily digest. You ask when you are stuck, and the rest of the app never mentions it.
It can say no
A goal with an empty log gets told there is nothing written down, rather than handed a confident diagnosis of nothing.
your data
There is no server to leak it.
Goals live in your browser under a single key and never leave it. We hold no database, no account table and no copy of your notes — there is nothing on our side to hand over, sell, or lose.
Kept in this browser
One key, one device. Clearing your site data clears your goals, which is the honest consequence of nobody else holding them.
Moved as a file
Settings saves every goal to one JSON file and loads it back elsewhere. Loading only adds what is missing, so restoring a backup can never overwrite newer work.
Never carries your key
That file holds goals and nothing else. Your OpenAI key is not in it.
Settings → Save goals to a file
deliberately missing
What it leaves out.
Most of the work went into the things that are not here. Each one was considered, and each one would have made the silence easier to hide.
- streaks
- points
- badges
- percentages
- folders
- tags
- reminders
- notifications
- a chat bot
- a social feed
- a subscription
- an account
Just the days.
the writing
Why goals you care about go quiet.
The app is one answer to that question. The blog is the longer one — on drift, on reviews, on quitting well, and on what actually restarts a stalled project.
- 20 August 2026The first two weeks of a new goalThe opening fortnight feels like evidence and is not. What you do with the enthusiasm decides more than the enthusiasm does.5 min read
- 18 August 2026What a good week actually looks likeNot everything moving. A good week is a short list where nothing has been silent long enough to be in trouble, and that's a much lower bar than people expect.4 min read
- 15 August 2026Comparing yourself to people further alongYou're comparing your Tuesday to somebody's published output, and the comparison has a predictable effect on whether Tuesday happens.5 min read
questions
The short answers.
- Do I need an account?
- No. There is no sign-up, no email and no password. Open goaldrift and add a goal — that is the whole onboarding.
- Where are my goals stored?
- In your browser, under a single key, and nowhere else. There is no database on our side and nothing to breach.
- Does it sync between devices?
- Not on its own — that is the trade for having no account. Save your goals to a file in Settings and load that file on the other device; loading only adds what is missing and never overwrites what is already there.
- What does it cost?
- Nothing. The single AI feature runs on your own OpenAI key and OpenAI bills you directly for it; everything else in the app works with no key at all.
- Are there streaks, reminders or notifications?
- None. Nothing chases you. The list quietly reorders itself so the goal you have ignored longest is the first one you see, and that is the entire mechanism.
- What happens if I disappear for two months?
- The app is built for exactly that. Come back and the list is already sorted by how long each goal has been quiet, so you are reading a state of play rather than a pile of missed days.
Add one goal. Come back in a week.
The list will have sorted itself by then, and the top of it will be a goal you had stopped mentioning. That is the whole product.
Open goaldriftNo account. Nothing to cancel.