Skip to main content
Every abstraction (job, endpoint, queue, cron, Box, Sandbox, VLLM) accepts the same resource, blueprint and storage parameters. The ones that differ are listed at the end.

Resources

Blueprint and files

The current directory is synced into every container. Put a .levers9ignore file next to your script to leave things out (same syntax as .gitignore). Anyone in the workspace can read the synced folder in the dashboard, so keep credentials out of it. Files that look like secrets (.env, .env.*, *.pem, *.key, id_rsa*, id_dsa*, id_ecdsa*, id_ed25519*, .aws/, .netrc, .npmrc, .pypirc) are still uploaded today, and every run, serve and deploy names them in a warning. A later release leaves them out. Put the values in a secret instead, or, if a file really has to ship, keep it with a line such as !.env in .levers9ignore. LEVERS9_SYNC_SECRET_FILES=skip leaves them out now. The dashboard’s code view lists such files but doesn’t show what’s in them.

Serving

Endpoints, queues, boxes and VLLM keep containers alive between calls.

What a request brings with it

An endpoint, box or sandbox port gets the caller’s headers and cookies as they were sent, with one exception: the dashboard’s own cookies (levers9_session, levers9_oauth and levers9_cli) are taken out on the way in, so your code never sees someone’s dashboard sign-in. Your app’s own cookies get through untouched. On a box reached through an authorized URL (/box/<name>/... or /box/id/...), the Authorization header is the caller’s levers9 token that let the request in. Don’t build on reading it: a controlplane can be set to drop it before it reaches the box (LEVERS9_BOX_STRIP_AUTHORIZATION), and that’s where it’s heading. On a public box the header is your app’s own and always gets through.

Outputs

Output saves a file produced inside a container and gives you a URL for it:

Where each one is described

Jobs

.remote(), .map(), deploy as HTTP

Endpoints

serve with hot reload, keep-warm, autoscaling

Queues

.put(), retries, workers

Crons

when="0 2 * * *"

Boxes

ports, keep_warm_seconds, box.deploy()

Sandboxes

processes, files, network rules, snapshots