For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /tessl-platform-pricing.md.

Tessl Platform Pricing

The following table shows the actions that consume credits at a flat, per-action rate in the Tessl platform. Some actions are billed by usage rather than a flat rate; see Agent and launch sessions below.

Credit Consuming Actions

ActionDescriptionCredits
Skill best practice reviewReview skill against best practices, triggered on publish or via tessl review run.Free (0 credits)
Skill optimizeOptimize a skill against best practices via tessl review fix.100 credits * model multiplier
Generate eval scenarioCreate scenarios for evaluation using tessl scenario generate100 credits * number of scenarios generated
Code reviewReview a change with tessl code review, or a pull request with the Tessl Review GitHub App.50 credits2
Eval scenario runRun evaluations against scenarios - triggered on publish if scenarios exist and not disabled, or via tessl eval run100 credits * number of scenarios * number of runs * model multiplier * number of variants1

[1] Number of variants run per scenario. A run with context evaluates 2 variants (with and without context); a run without context, or one started with --skip-baseline, evaluates 1.

[2] Charged once for each review round that completes successfully, and the same amount whether the review runs from the CLI, the Tessl Review GitHub App, or the unsupported GitHub Action. The model, the lenses, the effort level and the profile do not change it, and there is no separate token charge. A round that fails is free, including one that fails after partial progress. A review that reports findings or requests changes has completed successfully and is charged. A review does not start at all when the organization has no credits left, and the surface that started it says so.

tessl eval run prints this eval-scenario-run cost before the run starts (and in its --json output as estimatedCredits), so the price is shown before any credit is spent. The figure is an upper bound: it prices every requested scenario, run and variant, and the settled charge can be lower because reused solves, scenarios the quality check excludes, and failed solves are not billed. When the organization has a daily eval-solution quota, the command also shows today's usage against that cap; organizations without a quota see no usage line.

Model Multipliers

Different tiers of models that are used to run evals or optimize skills (configured via the --model flag) are credited differently.

TierModelsMultiplier
Extra small (no model in this tier is available in the EU region)deepseek-v4.1-flash, glm-5.3, glm-5.3-flash, kimi-k3, minimax-m3, qwen3.8-max, gpt-oss-120b, nemotron-3-ultra-nvfp40.1
Smallgpt-5.6-luna, gpt-6-luna, claude-haiku-5-5, claude-haiku-4-50.5
Mediumclaude-fable-5, claude-sonnet-5-5, claude-sonnet-5, claude-sonnet-4-6, claude-sonnet-4-5, gpt-5.4, gpt-5.4-mini, gpt-5.6-terra, gpt-6-astra, gpt-6.1-sol, gpt-6-sol, gpt-5.3-codex, gpt-4.1, gpt-4.1-mini1
Largeclaude-opus-5-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-opus-4-5, gpt-5.5, gpt-5.6-sol5

Agent and launch sessions

Info

tessl agent and tessl launch are in beta. Full per-model credit costs will be published after launch.

tessl agent and tessl launch are billed by usage rather than a flat per-run cost. Each model call in a session consumes credits based on the input and output tokens it uses, so the cost scales with the price of the model you choose and the length of the session.

You can always select the model with the --model flag. When you do not, the implicit model depends on the command and any --agent you pass:

  • tessl launch without --agent defaults to claude-sonnet-5-5. With --agent, it uses that agent's own default model (for example, codex defaults to gpt-6.1-sol at medium reasoning effort).
  • tessl agent defaults to gpt-5.5. Your organization can set a different session default, and a persisted defaultModel in settings.json takes precedence over it.