Skip to main content
Everything durable lives in Postgres, at the DATABASE_URL the server is given. The server applies its database migrations at boot. Nothing is written into your repository.

What Postgres holds

Document bodies and evidence are stored by content, so an unchanged body is kept once.

Secrets

TRUECOURSE_SECRET_KEY encrypts two things: the provider API key a workspace saves on Settings › Models, and the values registered for a repository’s dependencies. The server refuses to boot without it, and it must be at least 32 characters long. A stored API key never comes back to the browser. The Models page shows only its masked tail.

Runs work on a copy

A run never touches your working copy. Each run clones the repository, or copies a local folder, into a private directory. It puts what the run needs there, saves the results to Postgres, and deletes the directory when the run settles.

The runtime directory

The server keeps machine-local scratch in a runtime directory. None of it is state. It defaults to ~/.truecourse-runtime. Set TRUECOURSE_RUNTIME_DIR to move it; the container image sets it to /data. Set TRUECOURSE_LOG_DIR to move only the log. A booting server sweeps away what a crashed one left behind.

Restarts

A restart stops the jobs and runs in flight. At boot, the server marks every run and job that a stopped process left running as Interrupted. Start the work again from the repository’s Pipeline tab, or from the run’s conversation on Agent.

Next steps

Installation

The variables a server needs, in local mode and hosted mode.

LLM transport

How a workspace’s provider key is saved, probed and used.