Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.tesslate.com/llms.txt

Use this file to discover all available pages before exploring further.

Tesslate OpenSail

Overview

OpenSail uses a multi-source credit system for AI usage, a four-tier subscription model for platform access, and a per-app, per-dimension billing engine for published apps on the marketplace. Payments run through Stripe with idempotent webhook fulfillment.

Four credit pools

Daily, bundled, signup bonus, and purchased, consumed in priority order

Four tiers

Free, Basic, Pro, Ultra, with increasing limits and BYOK on Pro+

Per-dimension app billing

Three dimensions (AI, compute, platform fee), four modes per dimension

Creator payouts

90% to creator, 10% platform, via Stripe Connect

Credits

Credits are the unified currency for AI usage. One credit equals one US cent. Costs are calculated in cents with Decimal arithmetic so no rounding drift compounds over long runs.

The four credit pools

PoolSourceExpirationPriority
DailyFree-tier allowance, 5 credits per dayResets at UTC midnight1st (consumed first)
BundledMonthly allowance from your subscription tierResets every 30 days on your billing date2nd
Signup bonusOne-time gift at registration, 15,000 creditsExpires after 60 days3rd
PurchasedCredit packages you buyNever expire4th (consumed last)
Deduction priority is ordered to maximize the value of your purchased credits. Free pool gets used first, then bundled, then expiring bonus, then permanent purchased.

How deduction works

1

Pre-request check

Before the agent calls the model, check_credits(user, model_name) verifies you have sufficient credits. BYOK routes always pass this check since no platform credits are charged.
2

Request runs

The model responds, token counts come back.
3

Cost calculation

calculate_cost_cents(model, tokens_in, tokens_out) looks up the current per-token prices (fetched live from LiteLLM, cached 5 minutes), multiplies, and rounds up with ceiling arithmetic. Non-zero usage always costs at least 1 cent.
4

Deduction

deduct_credits pulls from pools in priority order under a SELECT FOR UPDATE lock. Concurrent requests are serialized; the balance never goes negative.
5

Usage logged

A UsageLog row records model, tokens, cost, agent, project, and BYOK status.

Credit packages

Buy credits that never expire:
PackageCreditsPrice
Small500$5
Medium2,500$25
Large10,000$100
Team50,000$500
Purchases complete through Stripe Checkout. Fulfillment is idempotent, so webhook replays don’t double-credit.

Subscription tiers

FeatureFreeBasic ($20/mo)Pro ($49/mo)Ultra ($149/mo)
Monthly bundled credits05002,0008,000
Daily credits5000
Max projects371540
Max deployments13520
BYOKNoNoYesYes
SupportCommunityEmailPriorityPriority
Annual billingN/AAvailableAvailableAvailable
Exact tier pricing and credit allocations are configured in the platform and can vary per deployment. Self-hosted instances can set their own tier structure.

Upgrading

1

Open Settings, Billing

The unified billing hub lives at Settings, Billing.
2

Pick a plan

Click Upgrade on the tier you want. Choose monthly or annual.
3

Stripe Checkout

You’re redirected to Stripe’s secure checkout. Card details never touch OpenSail servers.
4

Automatic activation

After payment succeeds, your tier updates, bundled credits are granted, the reset date is set 30 days out, and BYOK unlocks (if Pro or Ultra).

Canceling

Cancellation takes effect at the end of the current period. You keep all tier benefits until then. Purchased credits are never affected by tier changes; they persist forever.

Team billing

Teams have their own billing scope: a separate subscription tier, a separate credit balance, and a separate Stripe customer. Team admins manage billing at Settings, Team Billing. Individual team members use the team’s credits when running agents on team-owned projects, and their personal credits for personal projects. For teams with billing admins separate from platform admins, the permissions system (orchestrator/app/permissions.py) scopes billing actions to the admin role.

App billing: three dimensions, four modes

Published apps on the Tesslate Apps marketplace have their own billing model, separate from platform credits. When a user installs your app, the creator decides who pays for what.

The three dimensions

All model calls the app’s bundled agents make during execution. Priced per token, calculated through the same dynamic LiteLLM pricing used by the core credit system.

The four modes per dimension

Each dimension can be set to one of four modes, independently:
ModeWho paysWhen to use
Creator paysThe app creator pays this dimensionFree-to-try apps, lead-gen apps, demos
Installer paysThe user installing pays this dimensionStandard marketplace apps
Platform subsidizedTesslate covers this dimensionFeatured apps, promotional launches
BYOK (bring your own key)Installer uses their own provider key, bypassing routing entirelyPower users, enterprise installations
A creator might set AI compute to “installer pays”, general compute to “creator pays” (absorbing hosting), and the platform fee to “installer pays”. Or BYOK for AI compute so enterprise customers route through their own keys, while the creator still absorbs general compute.

Promotional budgets

Creators can sponsor the first N installers by funding a promotional budget. While the fund lasts, all three dimensions are free to the installer. When the fund runs out, billing flips to whatever mode the creator configured. This is the go-to pattern for launches: free for the first 1,000 installers, then installer-pays. Installers get a taste, creators get distribution.

Caps and overage

Each dimension has its own caps and overage behavior configurable per app:
  • Hard cap: stop executing when the cap is hit
  • Soft cap: warn, prompt for an override, continue
  • No cap: run until the subscriber’s credits are exhausted
Caps protect both creators (from runaway installer usage when creator-pays) and installers (from runaway agents when installer-pays).

Creator payouts

RecipientShare
Creator90%
Platform10%
Revenue share applies to everything a creator sells: marketplace agents, published apps, paid skills, paid connectors. One-time purchases, subscriptions, and API-metered usage all split the same way.

Usage tracking

1

Open billing

Settings, Billing.
2

Summary view

See total cost, tokens in/out, request count for the current billing period, broken down by model and by agent.
3

Detail view

Click into usage logs for per-request records with model, tokens, cost, agent, project, BYOK status, and timestamp.
4

Low-balance warning

At 20% of your monthly allowance remaining, the header shows a warning badge. At 0 credits, an out-of-credits modal prompts you to purchase or upgrade.

Stripe reliability

OpenSail’s Stripe integration is built for idempotency and reliability under webhook replay:
  • Every fulfillment path checks the stripe_payment_intent for duplicate processing
  • Verify-checkout on redirect is a safe no-op if the webhook already fulfilled
  • Subscription updates, tier changes, and cancellations all log to the audit table
  • Transfer and invoice creation include idempotency_key to prevent upstream replay
If a payment succeeds in Stripe but your credits don’t update within 30 seconds, check Transaction History. Support can reconcile from the Stripe session ID.

Test cards (for self-hosted and dev)

CardBehavior
4242 4242 4242 4242Succeeds
4000 0000 0000 0002Declined
4000 0025 0000 3155Requires 3D Secure
4000 0000 0000 9995Insufficient funds
Use these to test the full checkout flow locally.

Troubleshooting

Card declined at the bank. Update payment method in Settings, Billing, or through the Stripe Customer Portal.
Wait 30 seconds for the webhook to fire. Refresh the page (verify-checkout fallback). Check Transaction History for status. Contact support with the Stripe session ID if still missing.
The daily reset loop runs hourly. Free-tier users reset at UTC midnight. Paid-tier users reset on their billing date; the Stripe webhook is the primary trigger, with a safety-net hourly sweep.
Check usage by model in Settings, Billing, Usage. Switch heavy tasks to cheaper models (Haiku, Flash, Qwen-Coder). Add BYOK on Pro or Ultra to bypass credits entirely. Set per-run cost limits on specific agents.

Next steps

Model Management

Pick cost-effective models and understand BYOK

API Keys

Add BYOK provider keys and external API keys

Publishing Apps

Set up the three billing dimensions and promotional budgets

Marketplace

Browse apps and see pricing in the wild