Test mode: payments go through Stripe test mode and are not real. Use test cards only.

Plans, limits and the paid beta

The two plans, the numbers the relay enforces, how to see your usage, and how the paid beta of the hosted service admits Pro users.

Plans

FreePro
Agents13
Wakes per day10no daily cap
Wakes per month1505000

The numbers are constants of the relay; a self-hosted relay uses the same values:

  • MAX_AGENTS_FREE
  • MAX_AGENTS_PRO
  • MAX_WAKES_FREE_DAILY
  • MAX_WAKES_FREE
  • MAX_WAKES_PRO

One agent covers the whole LAN, so one board is enough to wake many computers behind the same router.

Note
The Pricing page is the owner of the prices and of what is shown to visitors. If it and these numbers disagree, the relay's constants are what is enforced.

What is counted

  • Agents. Registering an agent over the limit answers 400 with the message below. A virtual (emulator) agent counts like any other.
    Agent limit reached (N for <plan> plan). Upgrade to Pro.
  • Wakes. The relay counts a wake when the agent confirms a real wake. It reads one flag in the header of the encrypted frame to know that a frame is a wake, so ping and info are never blocked or counted. The daily counter resets at midnight UTC.
  • Monthly figure. monthly_limit is reported by /limits; the relay's own check on the WebSocket is the daily one.
  • Over the daily limit. The relay answers on the WebSocket with the message below (retry_after is the seconds until midnight UTC).
    {"type": "error", "code": "WAKE_LIMIT", "retry_after": <seconds>}
  • Command rate. Separately from the plan, an agent accepts 10 commands per minute ( Limits and errors ).

See your usage

A request to /api/v1/limits with your token returns the plan and the counters:

GET /api/v1/limits
Authorization: Bearer pat_…

{ "plan": "free",
  "agents": { "used": 1, "limit": 1 },
  "wakes": { "today": 3, "daily_limit": 10, "daily_remaining": 7, "monthly_limit": 150 },
  "text": "Free · agents 1/1 · wakes today 3/10" }

When there is no daily cap:

  • daily_limit is 0
  • daily_remaining is null

The dashboard and the app show the same numbers.

The paid beta

The hosted relay admits Pro users in a limited paid beta. The reason is arithmetic, not marketing: until the business is registered, the revenue per calendar quarter has to stay under a legal limit, and the relay enforces a budget derived from it. Free users are never affected.

1 Look at the seats

GET /api/v1/beta/status is public. It reports the total, taken and remaining seats, and whether applications are open. The Pricing page shows the same.

2 Apply

A signed-in user calls POST /api/v1/beta/apply. While there is room the application is accepted at once and a seat is reserved. Otherwise the answer is 409 with the reason seats_full or quarter_budget_used. When the beta is off on the relay the answer is not_needed.

3 Pay

The billing service takes the card payment through Stripe Checkout and reports the payment and the subscription to the relay, which turns the account into Pro. A reservation nobody paid within 7 days is given back by an hourly sweep, as are the seats of users who are no longer Pro.

Applications also close when the money actually received in the quarter reaches the budget. A new quarter starts with an empty ledger.

Note
Whether self-service card payment is open at the moment is shown on the Pricing page. If it is not, the page names the support address for subscription changes. An administrator can also grant or revoke Pro by hand (POST /api/v1/admin/users/{user_id}/plan).

For operators of a relay

The paid beta is off by default: WAKELINK_PAID_BETA_ENABLED is false, so a self-hosted relay has no seats and no budget, and the plan limits above still apply. The settings are:

  • WAKELINK_PAID_BETA_QUARTER_LIMIT_PLN
  • WAKELINK_PAID_BETA_USE_RATIO
  • WAKELINK_PAID_BETA_PRICE_EUR_MONTH
  • WAKELINK_PAID_BETA_EUR_PLN
  • WAKELINK_PAID_BETA_RESERVATION_DAYS

The billing service is a separate component (Stripe keys, a price id, the shared WAKELINK_BILLING_SECRET); see its README in web/billing-ee and Self-Hosted Server .

Continue reading