🛫
Startup Runway Calculator
Model your cash, burn, revenue growth, and next round. Know exactly when the tank hits empty — and when to start fundraising.
Startup inputs
Leave 0 to ignore.
Negative = cost cutting.
When the round lands, if planned.
Net monthly burn
—
Projected runway
—
—
Zero-cash date
—
After planned raise
—
Start fundraising by
—
Monthly cash forecast
Safe 3-month warning Critical
| Month | Burn | Revenue | Net burn | Cash end | Status |
|---|---|---|---|---|---|
| Click "Update runway" to generate forecast. | |||||
How this calculator works
- Net burn = monthly burn minus monthly revenue.
- Growth rates compound month over month for burn and revenue.
- Runway is how many months until cash hits zero, capped at 120 months.
- Fundraising adds the target amount to cash when the round closes.
- Start fundraising by is 6 months before zero-cash date.
What to do next
- • Pair with the AI Startup Cost Calculator to build a detailed burn model.
- • Use the LLM Cost Calculator to sanity-check your AI API spend.
- • Update assumptions monthly; even small revenue growth changes the zero-cash date.
- • Start investor conversations 6 months before you need the check.
🤖 Use this tool in your agent
✓ Agent-ready codeCopy the snippet below into your agent, newsletter, or script. The tool page at hermesdispatch.dev/tools/startup-runway-calculator/ is the canonical contract: inputs, outputs, and formulas.
python
# Hermes Dispatch Tool — Startup Runway Calculator
# Source: https://hermesdispatch.dev/tools/startup-runway-calculator/
# Description: Estimate how many months a startup can operate before running out of cash.
# License: MIT (generated by hermesdispatch.dev)
#
# INSTALL:
# 1. Save this file as ~/.hermes/hermes-agent/tools/startup_runway_calculator.py
# 2. Restart Hermes or run /reset in a session
# 3. The tool auto-registers if Hermes uses auto-discovery of tools/*.py
#
# MANUAL REGISTRY (if auto-discovery is off):
# from tools.startup_runway_calculator import register
# register()
import json
DATA = {}
def _ok(result):
return json.dumps({"success": True, "data": result}, indent=2)
def _err(message):
return json.dumps({"success": False, "error": message}, indent=2)
TOOL_NAME = "startup_runway_calculator"
TOOLSET = "investing"
SCHEMA = {
"type": "function",
"function": {
"name": "startup_runway_calculator",
"description": "Estimate how many months a startup can operate before running out of cash.",
"parameters": {
"type": "object",
"properties": {
"cash": {
"type": "number",
"description": "Current cash in the bank in USD."
},
"monthly_burn": {
"type": "number",
"description": "Monthly burn rate in USD."
},
"monthly_revenue": {
"type": "number",
"description": "Monthly recurring revenue in USD."
}
},
"required": [
"cash",
"monthly_burn"
]
}
}
}
def _run(args):
cash = float(args.get("cash", 0))
burn = float(args.get("monthly_burn", 0))
revenue = float(args.get("monthly_revenue", 0))
net_burn = burn - revenue
if net_burn <= 0:
return _ok({"runway_months": "infinite", "net_burn": round(net_burn, 2), "note": "Revenue covers burn or better."})
months = cash / net_burn
return _ok({
"runway_months": round(months, 1),
"net_burn_monthly": round(net_burn, 2),
"cash_out_date": "Calculate from today + runway_months"
})
def HANDLER(args):
try:
return _run(args)
except Exception as e:
return _err(str(e))
def register():
"""Manual registry hook. Import and call this to register with Hermes."""
try:
from tools.registry import registry
registry.register(
name=TOOL_NAME,
toolset=TOOLSET,
schema=SCHEMA,
handler=HANDLER,
)
except ImportError:
print("Hermes registry not found; skipping manual registration.")
if __name__ == "__main__":
# CLI smoke test
print(HANDLER({}))
Want early access to the next locked tool? Subscribe to The Hermes Dispatch.