Billing & plans
hdls charges by what you use, not by seat. Your workspace sits on a plan that sets a few clear limits, and your actual usage is metered per workspace from a single source of truth. This page explains the model: the plans, the quotas they set, and how metered billing works.
A note on honesty. The billing model described here is implemented. The live payment provider may run in a development/test mode depending on environment — so treat the prices and tiers below as the shape of the plan structure rather than a live checkout. The quotas and rate limits, however, are enforced today.
💬 Just ask
- "What plan am I on, and how much of my usage have I used this month?"
- "Am I close to any of my limits?"
You don't call these tools yourself — just tell your assistant; the technical reference below is for when you want the details.
At a glance
- Plans:
free,pro,business, andcustom. - Two enforced limits, always on: a per-minute request rate limit and a monthly tool-call budget. These are the only ceilings enforced today.
- Per-dimension guidance (not yet metered): suggested monthly volumes for records, writes, reads, enrichments, and storage — guidance only, not hard caps.
- Metered billing: usage is counted from the durable usage ledger — the same ledger that powers your quota — so what you see and what you're billed on are one number.
The plans
| Plan | Headline price | Built for |
|---|---|---|
| Free | $0 | Trying hdls and small personal workspaces |
| Pro | Active teams running real workloads | |
| Business | High-volume teams who need headroom | |
| Custom | Contact sales | Negotiated limits beyond Business |
Free, Pro, and Business are self-serve tiers; Custom is a contact-sales plan with negotiated (uncapped-by-default) limits.
What each plan sets
Every plan resolves a set of limits. Two are enforced today; the rest are guidance, not yet metered.
What's enforced today: the per-minute rate limit and the monthly tool-call budget below. The per-dimension volumes further down are planning guidance — finer-grained metering is on the roadmap, not yet live.
Always-enforced: rate limit + monthly tool-call budget
Before every tool call, hdls checks two things, scoped to your workspace:
- Requests per minute — a fixed one-minute window. Free starts at 120 requests/minute; paid tiers raise this substantially (Pro and Business set their own, higher limits).
- Monthly tool-call budget — a ceiling on total tool calls in the calendar month, drawn from the same usage ledger that powers billing. Plans with no budget set are unlimited.
| Plan | Monthly tool-call budget |
|---|---|
| Free | 50,000 |
| Pro | 1,000,000 |
| Business | Unlimited |
| Custom | Negotiated (unlimited by default) |
When you cross a limit, the tool returns a clean rate_limited error telling you the
limit and window — it doesn't silently drop the call. Back off and retry. Because the
counter lives in the shared database (not any one server's memory), the limit stays
correct even when your traffic spreads across many serverless instances.
Per-dimension guidance (not yet metered)
The volumes below describe the dimensions that actually cost resources. They are guidance, not enforced caps — hdls does not currently meter or reject on a per-dimension basis. Today the only enforcement is the per-minute rate limit and the monthly tool-call budget above. Per-dimension metering is on the roadmap.
| Dimension | Free | Pro | Business |
|---|---|---|---|
| Records (total) | 10,000 | 250,000 | 1,000,000 |
| Writes / month | 5,000 | 25,000 | 100,000 |
| Reads / month | 5,000 | 50,000 | 500,000 |
| Enrichments / month | 500 | 3,000 | 10,000 |
| Storage | 1 GB | 50 GB | 500 GB |
Treat these as the headroom each tier is sized for, not as a wall you'll hit. custom
plans negotiate their own targets.
How metered billing works
Usage-based billing rests on one source of truth: a durable, append-only usage ledger that records a row for every tool/API call. There is no second counter — your monthly tool-call budget reads the same ledger — so quota and billing can never disagree.
The flow is straightforward:
- You call tools. Each call appends one row to the usage ledger (this also powers the live rate-limit checks above).
- hdls aggregates a period. For each workspace with an active subscription, hdls counts the calls in the billing window (by default the current calendar month).
- The metered quantity is reported to the billing provider, which charges based on that usage.
Your plan follows your subscription automatically. When a subscription becomes active, your workspace's keys move to that plan and the new, higher limits take effect on the very next call. If a subscription is canceled or a payment fails, your workspace downgrades to free-tier limits automatically — no operator action needed.
Limits & honest caveats
- Rate-limit windows are fixed, not rolling. A burst can straddle a minute
boundary; pace your calls and handle
rate_limitedrather than assuming a smooth average. - Quota and billing share one ledger. The number you're rate-limited against and the number you're billed on are the same — by design.
- Only two limits are enforced today. The per-minute rate limit and the monthly tool-call budget are live; the per-dimension volumes (records, writes, reads, enrichments, storage) are guidance, not metered caps. Finer-grained per-dimension metering is on the roadmap.
- The payment provider may be in test/dev mode. The plan structure, quotas, and metering are real and enforced; live charging depends on the environment's billing configuration. Don't assume a production charge is happening unless billing is configured for it.
Where to go next
- See the trust guarantees behind per-workspace rate limits on the Security, isolation & trust page.
- Understand what counts as a tool call by exploring the power tools.
- New here? Start with Getting connected to link your assistant, then Using hdls for the day-to-day workflow.