Tessera DOCS
Documentation

Get started with Tessera

Rent Linux machines by the hour and run them with a prompt. You can go from nothing to a machine you control through Claude with a single command — no dashboard visit required.

Get started in one line

Two real paths. If you have never signed up, create your whole account straight from the terminal or from Claude itself. If you already have an API token, connect and go.

New accounts start with a free trial worth about 5 running hours of the smallest machineno card required. When the trial credit runs out your machines simply pause (nothing is deleted) until you add funds. A card is needed only to continue past the trial, and is entered only on the payment processor's own secure page. One free trial per email address.

Brand new? Create an account through Claude — no website

Two equivalent ways, both with the free trial above — and both hand you a full-access token, so Claude can create your machine and build inside it (open a shell, run commands), the whole flow from one chat. Pick whichever fits how you work.

Option A · shell The copy-paste one-liner

Paste this into your terminal. It shows the trial terms and the live per-hour prices, asks you to confirm, takes your email and a password, creates your account, and runs claude mcp add for you.

terminal
curl -fsSL https://tesserahosting.com/start | sh

It needs only curl plus python3 or node (you already have node if you run an MCP client). Your API token is printed once — save it. If Claude Code is installed, the connection is wired up automatically.

Option B · Claude Let Claude create it for you

Point Claude at Tessera's public onboarding server — no token needed — then just ask.

terminal
claude mcp add --transport http tessera-start https://api.tesserahosting.com/mcp
Create my Tessera account and a small Ubuntu machine.

Claude calls account_create, shows you the token to save, wires up the full Tessera server with it, and builds the machine. Ask it to add_funds for a pay-link when you want to continue past the trial, and it can poll account_status to confirm the funds landed.

Already have a token? Connect and go

If you already created an account (on the web or earlier), connect the full Tessera server with your token. Paste your token in place of orb_YOURPREFIX_YOURSECRET:

terminal
claude mcp add --transport http tessera https://api.tesserahosting.com/mcp --header "Authorization: Bearer orb_YOURPREFIX_YOURSECRET"

Paste the token literally — no leading $. Writing Bearer $orb_… makes your shell treat $orb_… as an empty variable, so an empty token is sent and every call fails with 401 Unauthorized. The string starts with orb_, never $.

Full connection details — changing a token later, --scope user, and connecting ChatGPT — are in AI access (MCP).

The web way

Sign up & create your first machine

Prefer a dashboard? Sign up in the browser and build your first machine with the guided wizard. This creates exactly the same account the one-liner does — you can add AI access to it any time.

1. Create your account

Head to dashboard.tesserahosting.com and create an organisation. Everything you build lives inside your organisation, and you can invite teammates to it later.

  1. Open the sign-up page and fill in your organisation name, your name (optional), your email, and a password of at least 12 characters. Result: your organisation is created and you are signed straight in.
  2. Choose Create an API key when prompted, or skip it — you can always mint one later under Settings → API tokens. Result: if you create one, the key is shown once along with a ready-to-paste command for Claude Code. Copy it before you leave the screen.
  3. Choose Create my first machine to jump straight into the wizard, or Skip to dashboard.

You sign in with your email and password. If your account has an authenticator app enrolled, you will be asked for a six-digit code after your password.

2. Create your first machine

The New machine wizard walks you through everything a machine needs. Its steps stay open on a rail down the left — go back to any of them to change your mind before you build.

  1. What are we making? — give the machine a name (like orders-api), an optional note about what it is for, and pick an operating system. Optionally choose a one-click stack (like LAMP) to have software installed and configured at first boot.
  2. How big should it be? — pick a preset size, or choose Custom and set processors, memory and storage yourself. An allowance panel shows how much of your quota the choice uses. Result: storage can be grown later but never shrunk, so choose it deliberately.
  3. How should the storage be laid out? — keep one system disk, or add a separate data disk with its own mount point.
  4. Where does it live? — join a private network (or create one on the spot). The machine's address is assigned for you out of the network's range.
  5. What can reach it? — nothing is open until you say so. Add the ports you need, and choose who each is reachable from. (SSH on port 22 is handled separately and is always available through the secure door.)
  6. Who can sign in? — tick the SSH keys to install, make a new key in your browser, or paste a public key. Set a console username and password for the in-browser console. Result: a browser-made private key is downloaded to you when the machine is created — the platform only ever receives the public half.
  7. Ready to build — review every choice, optionally attach a git repository to deploy from, then press Create machine. Result: the wizard takes you to the machine's own page, where the one-time console password, the connect command, and any stack credential are shown. Save the password — nothing keeps a readable copy of it.

Prefer not to click? Everything the wizard does is one prompt to your AI, or one API call. Once you have connected an AI (next section), just say "create a 2-vCPU Debian machine called orders-api and open port 443".

The signature feature

AI access (MCP)

Connect Tessera to Claude Code or ChatGPT and your AI can build and run your infrastructure for you — create machines, wait for them to come up, run commands inside them, open ports, attach domains, and check your spend, all in plain language.

In a hurry? Get started in one line connects you (and can even create your account) with a single command. This section is the full reference for connecting and what your AI can do once it is wired up.

Get an API token

Your AI authenticates with an API token. Every token looks like orb_YOURPREFIX_YOURSECRET and carries only the scopes you grant it — a read-only token is perfect for letting an assistant explore; creating and deleting machines needs the matching :write scopes.

  1. In the dashboard, open Settings → API tokens and mint a new token (the onboarding screen can create one named "AI access (MCP)" for you). Result: the secret is shown once and never again. Copy it now.
  2. Keep the whole string, including the orb_ prefix. This is what you paste below.

Connect Claude Code

Run this once in your terminal, pasting your token in place of orb_YOURPREFIX_YOURSECRET:

terminal
$ claude mcp add --transport http tessera https://api.tesserahosting.com/mcp \
    --header "Authorization: Bearer orb_YOURPREFIX_YOURSECRET"

Paste the token literally — no leading $. Writing Bearer $orb_… makes your shell treat $orb_… as a variable, which is empty, so an empty token is sent and every call fails with 401 Unauthorized. The string starts with orb_, never $.

To change the token later, remove the connection first, then add it again: claude mcp remove tessera, then re-run the command above with the new token.

Add --scope user to the command to make Tessera available in every project, not just the current one.

Connect ChatGPT

Tessera publishes an OpenAPI description you can import as a custom GPT Action:

  1. In the GPT editor, add a new Action and import the schema from https://api.tesserahosting.com/api/openapi.json.
  2. Set the authentication to API Key → Bearer, and paste your orb_… token as the key. Result: the GPT can now call every Tessera endpoint your token's scopes allow.

Use Tessera on mobile — the Claude connector

There is a third way to connect, and it is the one that reaches your phone. Add Tessera once as a custom connector in claude.ai (in a browser) or in Claude Desktop, and it syncs to the Claude mobile apps automatically — so you can create and run machines, check your spend, and more from a chat on the go. It talks to the same MCP server as the claude mcp add command above; you are just wiring it up through Claude's own settings instead of the terminal.

  1. Open claude.ai in a browser, or the Claude Desktop app — not the mobile app. Custom connectors are added from web or desktop; your phone picks them up afterwards.
  2. Go to Settings → Connectors and choose Add custom connector.
  3. Paste the Tessera MCP server URL, give it a name such as Tessera, and click Add:
    MCP server URL
    https://api.tesserahosting.com/mcp
  4. Authenticate with your API token. Provide your orb_YOURPREFIX_YOURSECRET token where the connector asks for authentication — for example as an Authorization header with the value Bearer orb_YOURPREFIX_YOURSECRET. Result: the connector shows as connected and Tessera's tools become available in your chats.

Tessera authenticates with your API token, not an OAuth login. There is no "sign in with Tessera" pop-up — you paste your own orb_… token as the connector's Bearer credential. Don't have one yet? Mint it under Get an API token above, and paste the whole string including the orb_ prefix.

Once it is added on web or desktop, the connector syncs to your Claude mobile apps automatically — nothing to set up on the phone. From a mobile chat you can then just ask in plain language, and Claude uses Tessera's tools to do it: "spin up a small Ubuntu machine and tell me when it's ready," or "what have I spent this month?"

What your AI can do

Once connected, your AI has a full toolbox. You never call these tools yourself — you describe what you want and the AI chooses them. A few things to try:

Create, wait, and build inside a machine

The AI can create a machine, block until it is genuinely ready, then run commands and build your app inside it.

Spin up a 2-vCPU Ubuntu machine called web-1, wait for it to be ready, then install nginx and serve a hello page.

Under the hood it creates the machine, polls until it reports running, enables operator access, and runs your build commands — reporting progress as it goes.

Lifecycle: start, stop, reboot, resize, delete

Stop web-1 for the night.
Resize web-1 to 4 vCPUs — it needs to be stopped first, so do that.
Delete the machine called scratch, I'm done with it.

Networking: ports and domains

Open ports 80 and 443 on web-1, and only allow Postgres from my other machines.
Attach shop.example.com to web-1 with TLS, and tell me the DNS record to add.

Check your spend

What's my current bill this period, and what's driving it?

Almost every change is asynchronous: the AI is told the request was accepted, then waits for the machine to reach the state you asked for. A first build can take a few minutes — the AI keeps waiting and updates you, rather than assuming it is done.

Three ways in

Accessing your machine

You can reach a machine three ways: over SSH with your own key, through the in-browser console, or by granting your AI operator access so it can work inside the machine for you.

a. SSH with your own key

SSH is key-only — passwords are never accepted over SSH. Every connection goes through a single secure door that authenticates you with a key you registered, then forwards you only to machines your organisation owns. You never need a public address for the machine itself.

  1. Install a key on the machine: tick it in the wizard's Who can sign in? step, or add one under Settings → SSH keys and include it when you create a machine. (Keys are installed at build time.)
  2. Open the machine's page in the dashboard and copy the connection command shown there. It is generated for your machine and already routes through the secure door.
  3. Replace {key} with the path to your private key and run it. Result: you land on the machine as your login user. If SSH for the machine is restricted to your VPN, the page tells you so and gives you the direct command to use once the tunnel is up.

The command takes this shape (copy the real one from your machine's page rather than typing it by hand):

connect via the secure door
$ ssh -i {key} -o IdentitiesOnly=yes \
    -o "ProxyCommand=ssh -i {key} -o IdentitiesOnly=yes -W %h:%p -p 2222 <door>" \
    {user}@<machine-address>

The page also gives you an equivalent ~/.ssh/config block. Once it is saved, connecting is just ssh <machine-name>. The explicit IdentitiesOnly=yes matters — it stops your client offering the wrong keys to the door first.

b. The in-browser console

Every machine has a console you can open from its page in the dashboard — no SSH client, no key, and no network path into the machine required. It is the way back in if you ever lock yourself out over the network.

  • Sign in at the console with the console username and password you set in the wizard's Who can sign in? step (the one-time password was shown on the machine's page right after it was built).
  • The console works from anywhere and is unaffected by your firewall or VPN rules, because it does not reach the machine over the network at all.

c. AI operator access

To let your AI work inside a machine — run commands, read and write files, tail logs — you grant operator access. It is off by default, granted per machine, and completely revocable.

Enabling it provisions one dedicated, non-root account on the machine called ai-operator. Everything the AI does lands as that account. You will see it in the machine's account list — operator access is a visible, removable account, never a hidden backdoor.

  1. Ask the AI to enable operator access (or turn it on from the machine's page). If the machine needs one restart to pick up its agent, you are asked to consent to that first. Result: the AI waits until access is fully live before it runs anything.
  2. For native-speed SSH, the AI authorises its own public key onto the ai-operator account — the platform only ever sees the public half.
  3. Grant sudo only if the AI needs administrative rights. This is a separate, explicit escalation from enabling access — the operator stays non-root until you grant it, and you can revoke it at any time.

Revoking is complete and immediate. Disabling operator access closes the command channel at once, revokes the AI's authorised key, and removes the ai-operator account — locking the AI out of both commands and SSH. Every command the AI runs is recorded in your audit log (the command and its result size, never its output).

Grows itself

Auto-scaling

Let a machine grow itself when it is busy, between a floor and a ceiling size you choose. It is an opt-in you set per machine — Tessera never resizes a machine you have not put a policy on.

What it does

Auto-scaling moves a machine up and down through the standard sizes (Small → Standard → Large → X-Large) in response to how hard it is working. You set the smallest and largest size it is allowed to reach; it never goes below your floor or above your ceiling.

Wherever the hardware allows, growth is live, with no interruption:

ResourceScaling upScaling down
ProcessorsAdded live, no restartA brief restart at the smaller size (removing CPU or memory live is not safe)
MemoryAdded live where the machine supports it; otherwise a brief restart, and the machine tells you which happened
StorageGrown live; the machine enlarges its own filesystemNever shrunk

If a machine has to move to make room to grow, that move is also live — you are told it "scaled up to give it room, with no interruption". Every scale is written to the machine's history with an honest note of what happened and whether there was any downtime.

Thresholds, hysteresis and cooldown

A policy decides when to move using sustained utilisation, so a brief spike never triggers a resize:

SettingWhat it meansDefaultRange
Scale-up metricWhat to watch: processor, memory, or eitherProcessorcpu / mem / either
Scale-up levelGrow when usage stays above this80%1–100%
Scale-up sustained forHow long usage must stay high first5 minutes1 min – 24 h
Scale-downOptionally shrink when it goes quietOffon / off
Scale-down levelShrink when usage stays below this25%0–100%
Scale-down sustained forHow long usage must stay low first30 minutes1 min – 24 h
CooldownMinimum wait between scales10 minutes1 min – 24 h

The scale-down level must sit below the scale-up level — that gap is the hysteresis that stops a machine bouncing between two sizes. The cooldown makes it wait after every change before it will move again.

Enabling a policy

  1. Open the machine's Auto-scale settings, or ask your AI to set it up.
  2. Pick the smallest and largest size it may use, adjust the levels if you want, and turn it on. Enabling with defaults means "grow up to the largest size if you need to, never below where you are now".

Your wallet gates scale-up. If your balance will not cover the larger size, the machine stays where it is and the history notes "it is busy but your balance will not cover the larger size yet". Keep your wallet topped up (or turn on auto-refill) so a busy machine can grow when it needs to.

Live growth needs a machine that was built to grow. A machine that was not can still scale, but a memory change may need a brief restart — the history always tells you which path was taken.

Catalogue

Images & one-click apps

Start from a clean operating system, or from a turnkey stack that arrives already installed and configured. Ask your AI to "list the images" or "list the stacks" any time to see the live catalogue.

Operating system images

Eight current, signature-verified Linux images:

ImageIdFamily
Debian 13debian-13Debian
Debian 12debian-12Debian
Ubuntu 24.04 LTSubuntu-24-04Ubuntu
Ubuntu 22.04 LTSubuntu-22-04Ubuntu
Rocky Linux 9rocky-9Rocky
AlmaLinux 9almalinux-9AlmaLinux
Fedora 44fedora-44Fedora
Alpine Linux 3.24alpine-3-24Alpine

You can also boot from your own installer media instead of an image and install by hand at the machine's console.

One-click stacks

Fourteen turnkey setups. Choose one in the wizard's first step, or pass it when you create a machine, and it is installed and configured at first boot. Stacks that serve the web publish on your domain over HTTPS; database and cache stacks are reachable only from your own machines and your VPN.

LAMP web serverlamp

Apache, PHP and MariaDB, with your domain published over HTTPS.

LEMP web serverlemp

Nginx, PHP-FPM and MariaDB, published on your domain over HTTPS.

PostgreSQLpostgres

A PostgreSQL server with a database and an application account, reachable only from your own machines and your VPN.

MySQL / MariaDBmysql

A MySQL-compatible database, reachable only from your own machines and your VPN.

Redisredis

An in-memory cache and queue, reachable only from your own machines and your VPN.

Docker hostdockerhost

Docker Engine and Compose, ready to run your own containers.

Kubernetes (k3s)k3s

A single-node Kubernetes cluster, reachable from your own machines and your VPN.

Forgejoforgejo

Self-hosted Git service (Gitea-compatible), published on your domain.

n8nn8n

Self-hosted workflow automation, published on your domain.

Ghostghost

A self-hosted publishing and newsletter platform, published on your domain.

Plausibleplausible

Privacy-friendly, self-hosted web analytics, published on your domain.

Uptime Kumauptime-kuma

A self-hosted status and uptime monitor, published on your domain.

Vaultwardenvaultwarden

A self-hosted password manager (Bitwarden-compatible), published on your domain.

WireGuard VPN (wg-easy)wg-easy

Your own WireGuard VPN server with a web admin UI.

Compute

Machines

A machine is a Linux server you rent by the hour. Pick a preset size, or dial in exactly the processors, memory and storage you want.

Preset sizes

SizeIdProcessorsMemoryStorage
Smalls1.small1 vCPU2 GiB40 GiB
Standards1.medium2 vCPU4 GiB80 GiB
Larges1.large4 vCPU8 GiB160 GiB
X-Larges1.xlarge8 vCPU16 GiB320 GiB

Custom sizes

Choose Custom in the size step to set your own shape within these bounds:

  • Processors: 1 to 16 vCPU
  • Memory: 0.5 GiB to 64 GiB, in 0.5 GiB steps
  • Storage: 10 GiB to 2 TiB, in 10 GiB steps

Lifecycle

  • Start / stop / reboot — a machine bills while it is running; stop it when you are done.
  • Resize — change the size at any time. The machine must be stopped to resize by hand, and storage can only grow, never shrink. (Running machines can grow live under an auto-scale policy.)
  • Delete — permanently removes the machine and its disks. This cannot be undone.
  • Export — download a machine as a standard portable disk image plus its configuration, so you can run it elsewhere. There is no export fee, and no lock-in.
Connectivity

Networking

Private networks wire your machines together; a firewall controls what can reach them; custom domains publish them; and a personal VPN lets you reach them privately.

Private networks

Machines on the same private network reach each other privately, and nothing else can. Each machine is assigned a fixed address out of the network's range when it is built, and keeps it for as long as the machine exists. When you create a network you choose its size:

SizeUsable addresses
Compact126
Small254
Medium1,022

Firewall (open ports)

Inbound is deny-by-default — nothing is reachable until you open a port. Rules can apply to one machine or to your whole organisation.

  • Presets for common services: http, https, postgres, mysql, rdp, ping.
  • Or a protocol (tcp, udp, icmp) with a single port like 8080 or a range like 8000-8100.
  • Reachable from: Anywhere, only through your VPN, only your other machines, or a specific address or range.

Port 22 (SSH) is reserved and cannot be opened as a firewall rule — SSH is always handled through the secure door and governed by your VPN access policy. Replies to connections a machine started are always allowed.

Custom domains & TLS

Attach your own domain (like shop.example.com) to a machine from the machine's own page. You choose who terminates TLS — the platform edge or the machine itself — and, if verification is pending, Tessera gives you the exact DNS record to add. Point the domain elsewhere any time; it is yours.

VPN

Enrol a WireGuard device to reach your private networks over an encrypted tunnel. You generate the keypair and register only the public key — the private key never leaves you — and get back a ready-to-use configuration. Choose a split tunnel (only Tessera traffic goes through it) or a full tunnel.

Money

Billing

Tessera is prepaid: you keep a wallet topped up, and machines draw from it by the hour while they run.

How charges work

  • Billing is prepaid, in US dollars.
  • A machine is metered by the hour it runs, on its processors, memory and storage. Stop a machine and the compute charge stops.
  • Ask your AI "what's my current bill?" or open the wallet in the dashboard to see the running total, the current unit prices, and the per-line charges.

Current unit prices are shown live in your dashboard wallet and on the size step of the create wizard, so you always see the real number before you build.

Top-ups

Add funds to your wallet at any time. The dashboard offers quick top-up amounts, or enter your own within the allowed range.

Running low

You choose what happens as your balance runs down (under your wallet's low-balance setting):

  • Auto-refill — when the balance drops below a threshold you set, Tessera automatically charges your saved card for a top-up amount you choose, so your machines keep running.
  • Pause at zero — let machines stop when the wallet empties, rather than spending more.

If the balance reaches zero (and auto-refill is off or cannot charge), your machines are paused — stopped with their state saved, never deleted — and a top-up brings them straight back. There is a grace period before that pause, and further notice before anything is ever removed, so running out is always recoverable.

Build on it

API

Every action in Tessera is a REST call with a bearer token. Curl it, put it in CI, or build your own control panel — the same API your AI uses over MCP.

Base URL and authentication

  • Base URL: https://api.tesserahosting.com/api
  • Auth: send your token as Authorization: Bearer orb_YOURPREFIX_YOURSECRET.
  • OpenAPI: the full machine-readable description lives at https://api.tesserahosting.com/api/openapi.json — import it into ChatGPT, Postman, or a client generator.
create a machine
$ curl -X POST https://api.tesserahosting.com/api/machines \
    -H "Authorization: Bearer orb_YOURPREFIX_YOURSECRET" \
    -H "Content-Type: application/json" \
    -d '{"name":"web-1","image":"debian-13","size":"s1.medium"}'

Tokens and scopes

Mint tokens under Settings → API tokens. The secret is shown once and cannot be shown again — copy it when it appears. You also choose when it expires (30, 90, or 365 days, or never).

Every token carries scopes — grant a token only what it needs. A read-only set is ideal for letting an assistant explore; creating and deleting needs the matching :write scopes. The full scope vocabulary:

machines:readmachines:write catalogue:read exec:readexec:write ssh:write ssh_keys:readssh_keys:write console:write networks:readnetworks:write firewall:readfirewall:write domains:readdomains:write deployments:readdeployments:write vpn:readvpn:write exports:readexports:write installer_media:readinstaller_media:write billing:readbilling:write org:readorg:write

Tokens created in the dashboard are granted full access. To restrict a token to specific scopes, create it through the API (POST /api/org/tokens with a scopes array) — pass ["*"] for full access.

Asynchronous operations

Anything that changes a machine (create, start, stop, resize, delete, and more) is asynchronous. The API accepts the request and returns 202 immediately with a job to track. Read the machine back until its status settles into the state you asked for — rather than assuming the change is instant. Your AI does this waiting for you over MCP.

The OpenAPI document lists every endpoint, its parameters, and the scope it needs. It is the authoritative reference — this page is the tour.