Start here
What a run leaves behind
What each integration does today, what is Beta, and what is not built yet.
Reviewed 2026-10-02
After a run you want to know what happened, in what order and what it cost. This page lists each piece, what it does today and what is missing, so a missing item is never a mystery.
Three status words are used, and only these:
- Works today: it has been used on real runs, and there is a command that shows it working.
- Beta: it works in part. The row says exactly what is missing.
- Coming next: it is not built yet. Nothing here should be read as working.
Status matrix
| Piece | Status | Works today | Not yet |
|---|---|---|---|
| Server, tunnel and teardown | Works today | chalupa up, chalupa tunnel and chalupa down. Compute is destroyed and the protected data volume is left intact. Check it with chalupa status. |
A cost and timing receipt for each session. |
| Data volume | Works today | A declared volume lives in its own stack and survives teardown. Check it with chalupa status. |
Nothing deletes it for you: it bills monthly until you remove it on purpose. |
| Expiry backstop | Beta | Declare a session expiry and, on Hetzner or GPU setups, arm the hosted reaper with a scoped provider token in chalupa setup, or register a local teardown runner, so an expired server is destroyed. |
chalupa setup offers the hosted reaper only for Hetzner and for GPU setups; DigitalOcean Compose servers rely on the local runner today, and the hosted path needs a linked console account. The local runner needs an awake, unlocked machine. It is not a plan feature. |
| Browser flows | Works today | Run your flows from your laptop against the tunnelled ports and keep the video, screenshots and report. | Running the flows on the server beside the app. |
| Evidence storage | Beta | ci: runs attach evidence to the run. A failed laptop run is stashed locally and fcheap restore <id> brings it back. |
Passing laptop runs are not attached to anything. Uploaded evidence cannot be opened from the console yet. |
| Crash capture | Beta | ci: runs with ci.monitor capture the stack trace and culprit frame of a failing step. Host metrics work on one provider. |
Interactive servers, the second provider's telemetry and containers outside your Compose file. |
| Secrets | Beta | overrides.<service>.env: { NAME: "${NAME}" } plus tvault run --only NAME -- chalupa up. |
Values are written to the server's startup config and to local state. env_file is not supported. Runtime delivery is coming next. |
| Logs | Beta | Logs of the Compose services you opt in with session.logs are collected as log chunks. The console shows the first lines of each chunk for 24 hours, and chunks can be downloaded within your plan's retention. |
Collection can stop at its chunk limit or the original deadline. A service with its own non-journald logging driver must be excluded, and containers outside your Compose file are not collected. A searchable view tied to each run is coming next. |
| AI agents (MCP) | Beta | chalupa mcp (environments, status, sessions, logs, failed-run context, recent test runs, cost, explain, live CI status, experiment results), chalupa explain --json and chalupa connect --format app-brief. |
Launch and teardown are not MCP tools. Evidence files (screenshots, videos, reports) cannot be opened over MCP. See Chalupa for agents. |
| Hosted console | Beta | Run history, CI runs, performance windows and comparisons for the environments you link. | A run page that ties a run to its server, its logs and its time window. |
| Evidence pages | Coming next | Not built. | A page for each run with its evidence, logs and cost in one place. |
Where evidence goes
Run from your laptop. Browser flows (CairnTrace) and anything else you run
against the tunnel keep their output on your machine. A failed run is stashed
in your local file.cheap vault, and fcheap restore <id> prints it back. A
passing run is not stashed automatically. Nothing from a laptop run is uploaded
unless you set that up yourself.
Run as a ci: suite. Steps run on the server. The engine packs each step's
evidence and publishes it to the artifact service when the environment carries
an ingest credential. chalupa down also collects the settled run's reports
and packs into ~/.local/state/chalupa/ci-runs/<runId>/ before it destroys the
server, one directory per run, so a later run never overwrites an earlier one.
It is best effort. An expiry-driven teardown from the hosted reaper destroys the
server from the cloud side, where no local collection can run.
Check a suite with:
chalupa ci status
chalupa ci artifacts
chalupa ci report
Logs: excerpt versus download
The console shows short redacted excerpts, the first lines of each collected chunk, for 24 hours. Complete log chunks are downloadable for as long as your plan retains them: 7 days on Solo and 30 days on Crew. Community keeps history locally. Collection is bounded by the session's byte budget and a 256-chunk ceiling, so a noisy service can fill its budget before the run ends. See private log artifacts.
Run browser flows on the server
CairnTrace can also run as a ci: step on the server, beside the app. Browser
steps always run on the server host, and the failed-step evidence rides the same
artifact pack:
ci:
suite: browser-smoke
steps:
- id: browser-specs
uses: cairntrace
environment: chalupa
specs: [flows/checkout.yml]
onFailure:
investigate:
enabled: true
pids: [api, top_cpu]
onFailure.investigate captures an incident with Monitor when a step fails.
Its alternative, onFailure.record, records a video of the failing step with
vidtrace; a run arms one of the two. Both are best effort: a missing tool is
reported, never a changed result. Chalupa does not install them for you, so bake
them into your server image. Collecting trace or video output makes failed runs
large, so turn them on while debugging a specific red run rather than by
default. See Declarative CI.
Missing something?
Troubleshooting walks through the usual reasons a piece of evidence is not where you expect it.