Self-hosted quickstart
Get a working Tale instance running on your machine — install the tale CLI, then two commands, and the setup wizard makes you the Owner.
5 min read
This is the fastest way to a running Tale: install the tale CLI, then two commands. The result is your own org running on your own machine, reachable in the browser. It is meant for a laptop or a single host you want to try Tale on; when you are ready to run it for real, the Linux server walk covers a hardened production install.
Before you begin
You need nothing to start, and one thing before an agent can answer:
- Docker — but the CLI provisions it for you: when Docker is missing,
tale devoffers to install or start it before anything else. If you already run Docker Desktop (v24+), or Docker Engine plus the Compose plugin on Linux, the CLI uses that. - An OpenRouter API key (or any OpenAI-compatible provider) so agents have a model to talk to. You do not need it for
tale init— you add it in the app after sign-up, in the setup wizard or under Settings > AI providers, and you can swap in any provider later.
From zero to signed in
Install the CLI
The installer detects your OS, drops the
talebinary on yourPATH, and is the only step that touches your system — it asks forsudowhen the install directory (default/usr/local/bin) is not writable.bashcurl -fsSL https://raw.githubusercontent.com/tale-project/tale/main/scripts/install-cli.sh | bashCreate a project
bashtale init my-project cd my-projecttale initscaffolds a project directory, generates every security secret, and writes the.env, so there is nothing to hand-edit. The defaults are localhost and a self-signed certificate; the production domain is chosen later, attale deploy. The one question it asks is whether agents may rundocker/docker composeinside their sandboxes — the default is No, because enabling it runs a privileged inner Docker; a single-user install can say yes, while multi-tenant operators should install Sysbox instead. It does not ask for an API key; that is collected in the app once you sign in. It also drops example agents, workflows, integrations, providers, skills, and branding underdefault/, and writesAGENTS.md(plus aCLAUDE.mdpointer) so an AI editor can build configs with full schema awareness. Most of that tree is a catalog rather than live configuration — only entries markedautoInstallare active on a new organization, and the generateddefault/README.mdexplains the split.Start Tale
bashtale devIf Docker is missing,
tale devoffers to install or start it first. The first run then pulls several gigabytes of images and builds the container graph — the CLI prints per-image pull progress and keeps waiting, so on a slow network this can take tens of minutes. Once the stack reports ready (Tale is running — open https://localhost),tale devopens your browser automatically. If it cannot, it prints the URL to visit.Your config under
default/is bind-mounted into the running instance, so edits to agents, workflows, and integrations reload live. Stop the stack withCtrl-C(ortale dev --detachto run it in the background).Create your account
On an empty instance there is no sign-up page to hunt for: the first visit lands in the one-time setup wizard, which creates your account, signs you in, makes you the Owner, and names your Organization. You land in the dashboard — no admin key involved, and nothing to lock down afterward, because everyone after you joins by invite.
Add a model and publish an agent
You now have an empty org. Two moves get you to something useful: add your OpenRouter key — the setup wizard prompts for it right after you create the owner account, and Settings > AI providers takes it any time later — then publish your first agent with Create an agent. A confirmation on the provider row means the key works.
Prefer raw Docker Compose?
The CLI wraps docker compose so you do not have to. If you would rather run the stack from a clone of the repository and manage compose yourself — for transparency, air-gapped builds, or your own automation — clone the repo, copy .env.example to .env, set HOST and SITE_URL, generate the secrets, and docker compose up -d. The Linux server walk and the Docker Compose reference cover that path end to end.
Troubleshooting
talenot found after install. The installer names the destination directory in its output; make sure that directory is on yourPATH(on Linux it is usually/usr/local/bin).tale devexits with a port conflict. Read the compose error to see which port is taken. If it is 443, another service binds HTTPS on the host — free it, or remap withtale dev --port 8443(the flag remaps only the HTTPS port). The sandbox spawner always binds127.0.0.1:8003and cannot be remapped, so two Tale dev projects cannot run on one machine at the same time.- Docker is not running.
tale devoffers to start (or install) it — accept the prompt, or start Docker Desktop yourself (sudo systemctl start dockeron Linux) and retry. - A container crash-loops on first boot. Almost always a missing secret — re-run
tale dev, which re-runs environment setup, or inspect logs withtale logs platform.
Where this gets used
You now have a working Tale instance on your machine. To run it for real, the Linux server walk covers TLS, firewall, a non-root user, and the operational hooks you want before real traffic lands; CLI install sets the CLI up to deploy and upgrade a remote instance from your workstation.