// HACKER NEWS — CYBERSECURITY
Show HN: How long do I need to work at my salary before I can coast, or retire?
How many years at a big salary before you can coast, retire, or retire and never shrink your nest egg.
Heads up: this is a vibe-coded FIRE tool. It was built in a conversation with Claude (an AI):
someone described what they wanted, and Claude wrote the code, the tests and the design log.
No financial professional has reviewed it. It is not financial advice. Use it to explore
ideas, and check anything important with a real human who does this for a living.
It answers one question: how long do I need to work at a high salary before I can stop, coast, or retire?
To find out, it simulates your money day by day to age 112 in real (today's) dollars. Each day,
wages arrive net of income tax, the day's expenses go out, and any surplus is invested. When there's a
shortfall, it sells from the portfolio and pays the tax on that sale. Every expense is padded by a
safety factor (1.1×). A bisection solver then finds the shortest stretch at the high salary (the X
in your income plan) that keeps the balance at or above $0 on every single day.
Each plan is solved for three goals: retire to $0 (the money lasts until 112), coast until 60
(a job that pays your core expenses until 60), and flat from 100 (the portfolio never shrinks after 100).
uv run fire.py --plan sf_family (a shipped example: SF, one kid, a 120 → 175 → 230k ladder):
Regenerate these with uv run docs/screenshots.py (it only uses the shipped example plans).
The plans are plain Python, so Claude Code works well as the interface. Describe
your life in plain English ("I make $180k, want two kids in my early 30s, might move somewhere cheaper at 35; when
can I coast?") and have it write the plan in custom_plans/, run fire.py / grid.py, and put the results side
by side. It's also good for questions like "what if my partner stops working?" or "does insurance really double for
a couple?", for sanity-checking expense estimates, and for keeping a log of the assumptions you chose. Keep
personal numbers in custom_plans/ (gitignored) so they stay out of the repo.
Requires uv. Dependencies are just rich and plotext.
Main fire.py flags (--help for all). uv run grid.py [NAME] runs a grid (default DEFAULT_GRID).