docs
// Features

Service Tiers

Seven tiers, chosen per endpoint at creation. Free for evals, pay-per-token on shared CPU and GPU pools, or flat-hourly on your own workers. A tier prices the request; hardware is a separate, per-endpoint requirement. The request-level service_tier hint only nudges priority and billing within the tier you already picked.

A tier is a pricing plane. It sets the per-token or hourly rate, rate limits, timeouts, concurrency, and scheduling priority. It does not constrain hardware: hardware eligibility is declared per endpoint as a hardware requirement and evaluated against each worker's reported capability at routing time. See Hardware Requirements.

Tiers are divided into three categories:

  • Free, For evaluation and testing with shared CPU resources.
  • Compute (CPU and GPU Shared), Pay-per-token tiers with shared accelerator pools.
  • Self-Hosted, Bring your own infrastructure with flat hourly billing and no token metering.

User-selectable tier slugs (identifiers used in the API and configuration) are: free, cpu_amd_optimized, cpu_intel_optimized, gpu_nvidia_shared, gpu_amd_shared, gpu_intel_shared, self_hosted.

Dedicated GPU tiers are deprecated. The legacy gpu_nvidia_dedicated and gpu_amd_dedicated slugs are retained for backwards compatibility only. New endpoints created against these slugs are transparently remapped to their shared equivalents (gpu_nvidia_shared and gpu_amd_shared). Do not select a dedicated tier when creating new endpoints; pick the shared variant directly. Pinned, single-tenant GPU capacity is not currently offered as a self-service tier.

Figures are behind sign-in. Per-token, cached, and hourly rates are shown to signed-in accounts. Everything else on this page -- what each tier bills for, the multipliers, the limits, and the caps -- is the same either way. For a quote without an account, mail contact@erebine.ai.

Tier Comparison

Pricing and Rate Limits

Tier (slug) Pricing Tokens/Min Requests/Min Max Model Size
Free (free) No charge 10,000 64 48 GB
CPU AMD Optimized (cpu_amd_optimized) Per token 100,000 128 Unlimited
CPU Intel Optimized (cpu_intel_optimized) Per token, same rate as CPU AMD 100,000 128 Unlimited
GPU NVIDIA Shared (gpu_nvidia_shared) Per token, highest shared-GPU rate 500,000 256 Unlimited
GPU AMD Shared (gpu_amd_shared) Per token, lowest shared-GPU rate 500,000 256 Unlimited
GPU Intel Shared (gpu_intel_shared) Per token, tied with GPU AMD 500,000 256 Unlimited
Self-Hosted (self_hosted) Flat hourly, no token meter Unlimited Unlimited 512 GB

"Unlimited" in the rate limit columns means no per-minute token or request cap is enforced. Model size limit of "Unlimited" in the database means no size check is applied -- the limit is determined by available VRAM on the assigned workers.

Cached tokens are charged at 25% of the full per-token rate on all billable tiers. See Cached Token Pricing for details.

Timeouts and Concurrency

Tier Request Timeout Idle Timeout Max Concurrent Batch Size
Free 30s 120s 8 1
CPU AMD / Intel 300s 600s 24 8
GPU NVIDIA / AMD / Intel Shared 300s 600s 48 16
Self-Hosted 1800s 3600s 96 64

All tiers except Free support both streaming responses and request batching. The Free tier supports streaming but not batching.

Tier Details

"Pool hardware" describes what the platform stocks each pool with. It is descriptive, not a gate: to require specific silicon for an endpoint, declare a hardware requirement on the endpoint.

Free (free)

Shared CPU pool. Two endpoints, two models, and a 1,000-credit grant per cycle to your first project while it has no payment method on file. The right tier for evaluating the routing surface and proving an SDK call works.

Pool hardware
Shared CPU pool
Routing priority
10 (lowest)
Credit grant
1,000 credits per cycle
Endpoint cap
2
Model cap
2 (<= 48 GB each)

CPU AMD Optimized (cpu_amd_optimized)

ZenDNN on AMD EPYC. Pick this for batch workloads where accelerator cost matters more than tail latency.

Pool hardware
AMD ZenDNN CPU
Routing priority
20
Distinguishing trait
Same rate caps as Intel CPU; pick by available capacity.

CPU Intel Optimized (cpu_intel_optimized)

Intel oneAPI on Xeon. Same caps, concurrency, and priority as the AMD CPU tier; choose based on which silicon your workload benchmarks against.

Pool hardware
Intel oneAPI CPU
Routing priority
20

GPU NVIDIA Shared (gpu_nvidia_shared)

NVIDIA CUDA on the shared GPU pool. The widest model compatibility of the shared GPU tiers because most published kernels target CUDA first.

Pool hardware
NVIDIA CUDA
Routing priority
25
Per-token rate
Highest of the shared GPU tiers; widest kernel coverage

GPU AMD Shared (gpu_amd_shared)

AMD ROCm on the shared GPU pool. Same rate caps and scheduling priority as the NVIDIA shared tier, at a lower per-token rate.

Pool hardware
AMD ROCm
Routing priority
25
Per-token rate
Lowest of the shared GPU tiers, tied with Intel

GPU Intel Shared (gpu_intel_shared)

Intel oneAPI on Arc and Max GPUs. Tied with AMD ROCm for the lowest per-token rate among shared GPU tiers.

Pool hardware
Intel oneAPI GPU
Routing priority
25
Per-token rate
Lowest of the shared GPU tiers, tied with AMD

Self-Hosted (self_hosted)

Your workers, your infrastructure. No token metering, no request-rate cap, 1800s request timeout. Billed as a flat hourly rate for the routing and management layer, charged per enrolled worker for the hours it is enrolled. Workers are pinned to the project; model size is capped at a declared 512 GB.

Pool hardware
Your own workers, any vendor or form factor
Routing priority
30 (highest)
Max declared model size
512 GB
Request timeout
1800s
Billing
Flat hourly; no token meter

Note on hardware matching. Like every tier, Self-Hosted carries no hardware constraint of its own. Self-hosted endpoints are bound to specific worker agents, and the router filters those candidates by the endpoint's declared hardware requirement and the model's VRAM footprint. Size self-hosted clusters for the workers you enrol and the requirements your endpoints declare.

Tier Selection

The service tier is configured per endpoint in the Erebine dashboard or API. When you create or update an endpoint, you select which tier it uses. All requests to that endpoint are routed to workers serving the configured tier that also satisfy the endpoint's hardware requirement.

The endpoint's configured tier always determines which worker pool is eligible to serve a request; it cannot be overridden per request. The OpenAI-compatible service_tier request parameter does, however, influence routing within the configured tier and billing:

service_tier value Routing score adjustment Token billing
flex -15 (de-prioritized against other in-flight work) Standard per-token rate
default (or omitted) No adjustment Standard per-token rate
priority +15 (preferred against other in-flight work) 1.25x the standard per-token rate

The actual tier used is returned in the service_tier field of every response (both streaming chunks and non-streaming completions). When a request uses priority, both prompt and completion tokens are billed at the 1.25x multiplier on top of the endpoint tier's per-token rate; cached tokens are still discounted by the tier's cached token multiplier before the priority multiplier is applied.

The router selects backends within the configured tier using configurable routing strategies:

  • Least Loaded, Prefer workers with the lowest queue depth.
  • Lowest Latency, Prefer workers with the lowest predicted latency.
  • Model Affinity, Prefer workers that already have the model loaded.
  • Round Robin, Cycle through available workers evenly.
  • Composite, Weighted combination of multiple strategies.

You can also pass optional X-SLO-TTFT-Ms and X-SLO-TPOT-Ms request headers to hint at latency targets. The router boosts preference for workers likely to meet these targets. See the SLO Tracking documentation for details.

Hardware Requirements

Hardware constraints live on the endpoint, not the tier. An endpoint can declare a hardware requirement; the router routes only to workers that satisfy every field set:

  • Vendor class, The accelerator family the model targets: NVIDIA CUDA, AMD ROCm, Intel oneAPI, Apple Metal, or CPU.
  • Minimum VRAM per GPU, Each GPU on the worker must have at least this much memory. On unified-memory hardware such as Apple silicon, shared system memory counts toward the floor.
  • Minimum GPU count, The worker must expose at least this many GPUs.
  • Architecture class, A minimum GPU architecture generation, for models that depend on generation-specific kernels.
  • GPU model pin, An optional exact GPU model match, for workloads validated on specific silicon.
  • NVLink, Require an NVLink interconnect between GPUs, for multi-GPU workloads sensitive to interconnect bandwidth.

Unset fields do not constrain: an endpoint with no requirement runs on any worker serving its tier. Requirements are evaluated against the capability each worker reports and refreshes while connected, so a fleet change takes effect without redeploying the endpoint.

macOS Integration

Apple Silicon Macs (arm64, macOS 15+) integrate natively via the Erebine desktop application. The app installs, configures, and controls an inference agent with Metal-accelerated vLLM in a single window -- no container or admin password required. Once enrolled with a join key, the Mac appears under Infrastructure → Agents and serves as a shared-workload worker for the project.

The native path uses Apple Metal (not CUDA/ROCm) and declares appleMetal as its accelerator class. Unified memory is shared between CPU and GPU; the router budgets it from the hardware requirement you declare on the endpoint. See EIM on macOS for the full deployment guide.

Cached Token Pricing

When prefix caching is active and input tokens are served from the KV cache (reported as prompt_tokens_details.cached_tokens in the usage object), those tokens are billed at a reduced rate. The cached_token_cost_multiplier for each tier determines the fraction of the full per-token price charged for cached tokens.

Tier Cached Token Multiplier
Free 0.0 (not metered)
CPU AMD / Intel Optimized 0.25 (75% discount)
GPU NVIDIA Shared 0.25 (75% discount)
GPU AMD / Intel Shared 0.25 (75% discount)
Self-Hosted 0.0 (not metered)

The multiplier is the whole mechanism: it is the fraction of that tier's full per-token price charged for a cached token. Sign in for the two rate columns.

Maximizing your prefix cache hit rate directly reduces your token costs. See Prefix Caching for prompt structuring recommendations.

Custom Models and Tier Restrictions

Custom models, models that you upload and manage privately within your project -- are restricted to the Self-Hosted tier. To use a model on shared compute tiers (Free, CPU, or GPU Shared), the model must be published to the public catalog and promoted to the shared catalog role.

This restriction ensures that shared infrastructure only runs models that have been explicitly published and vetted. Private models never run on shared agents.

Model Type Allowed Tiers
Custom (private, not in catalog) Self-Hosted only
Catalog model (deployable role) Self-Hosted only
Catalog model (shared role) All tiers

Catalog Roles and Tier Access

Models in the public catalog are assigned a catalog role that controls which tiers they can be deployed on:

  • Deployable: The default role for newly shared models. The model is visible in the catalog but can only be used with the Self-Hosted tier. Other users can see the model in the catalog but must deploy it on their own infrastructure.
  • Shared: The model is available on all tiers, including shared compute.

The catalog role is managed automatically by the platform based on the state of the shared-agent model cache. There is no manual promotion endpoint and no operator workflow to flip the role directly:

  • When at least one shared agent has the model cached and ready to serve, the platform promotes the catalog role to shared.
  • When no shared agent has the model cached, the platform demotes the catalog role back to deployable.

Because promotion follows shared-agent cache state, the set of catalog models available on shared tiers can change over time as agents load, evict, or rotate models.

For details on how model sharing works and how to publish models to the catalog, see the Model Sharing documentation.

Shared Tier Caveats

Important: Shared models are subject to change. Models available on shared agents may be evicted or replaced at any time. Endpoints using shared models on shared tiers may become unavailable if the backing model is removed from shared infrastructure. For guaranteed availability and permanence, deploy the model on Self-Hosted infrastructure that you control.

Key considerations when using shared tiers with catalog models:

  • Model availability is not guaranteed. A model that is available on shared tiers today may be demoted to deployable-only tomorrow if shared agents evict it due to capacity constraints.
  • Endpoints may become unavailable. If the backing model is removed from shared infrastructure, endpoints on shared tiers will return 503 Service Unavailable until the model is re-provisioned or the endpoint is moved to the Self-Hosted tier.
  • Use Self-Hosted for critical workloads. If your application requires guaranteed model availability, deploy on the Self-Hosted tier, where you control the infrastructure and model lifecycle.
  • Monitor endpoint health. Use the dashboard or API to monitor endpoint provisioning status. If an endpoint shows as unprovisioned, the backing model may have been evicted from shared infrastructure.

Completion Storage

When store: true is set in a request, the completion is saved for later retrieval. Completions pass through two storage stages before expiration:

When store: true is set in a request, the completion is saved. A hot tier cache (Redis) fronts recently used content for fast retrieval; older content is archived to object storage. Content is retained as long as the project is funded - there is no per-tier time-to-live. If the credit balance reaches zero, storage enters a 96-hour grace window; settling the balance within it removes nothing. See Pricing for the storage rate and the published credit exchange.

Free Account Limits

Free plans grant 1,000 credits per cycle to your first project (while it has no payment method and no active subscription). When the credit balance reaches zero, token requests halt; storage keeps its 96-hour grace window before removal. There is no per-month token cap and no system-level storage quota - the credit balance is the only governor.

Choosing a Tier

Use Case Recommended Tier
Testing and prototyping Free
Batch jobs where cost matters more than tail latency CPU AMD or CPU Intel Optimized
Production traffic on a CUDA-targeting model GPU NVIDIA Shared
GPU traffic where the lower per-token rate beats CUDA kernel coverage GPU AMD or GPU Intel Shared
Models larger than 48 GB Any paid Compute tier, or Self-Hosted up to 512 GB
Data sovereignty / compliance Self-Hosted
Requests longer than 5 minutes Self-Hosted (1800s timeout)

When a model needs specific silicon, declare it in the endpoint's hardware requirement; the tier choice stays a price choice.

Change a tier from the endpoint settings page; new requests pick up the change on the next dispatch.

Code Examples

The endpoint's tier is fixed at creation; these requests do not select one. Pass an optional service_tier body field (flex, default, or priority) to nudge routing priority and billing inside the configured tier (see Tier Selection). The response echoes the actual tier used.

Python (OpenAI SDK)

from openai import OpenAI client = OpenAI( base_url="https://api.erebine.ai/proj_ABC123/my-endpoint/v1", api_key="ere_my-project_abc123" ) response = client.chat.completions.create( model="my-model", messages=[{"role": "user", "content": "Hello"}] ) print(response.choices[0].message.content) # The service_tier field shows which tier processed the request print(f"Service tier: {response.service_tier}")

Node.js (OpenAI SDK)

import OpenAI from 'openai'; const client = new OpenAI({ baseURL: 'https://api.erebine.ai/proj_ABC123/my-endpoint/v1', apiKey: 'ere_my-project_abc123' }); const response = await client.chat.completions.create({ model: 'my-model', messages: [{ role: 'user', content: 'Hello' }] }); console.log(response.choices[0].message.content); // The service_tier field shows which tier processed the request console.log(`Service tier: ${response.service_tier}`);

curl

curl https://api.erebine.ai/proj_ABC123/my-endpoint/v1/chat/completions \ -H "Authorization: Bearer ere_my-project_abc123" \ -H "Content-Type: application/json" \ -d '{ "model": "my-model", "messages": [{"role": "user", "content": "Hello"}] }' # The response includes "service_tier" indicating the endpoint's configured tier