Skip to main content
Install the runtime from PyPI. tai42-skeleton pulls in the tai42-contract, tai42-kit, and tai42-cli packages it builds on — tai42-cli provides the tai command — so one install puts the whole runtime and the tai command on your path.

Requirements

  • Python 3.13 or newer.
  • uv for the uv add, uv venv, and uv pip install commands below. The pip install needs no uv; the from-source flow does.
  • Redis 7.0+ and Postgres only for the features that need them — access control, connectors, and interactions. Local tools and mounted MCP servers need no services at all.

Install

Run that inside an activated virtual environment — a stock system Python refuses a bare pip install with error: externally-managed-environment. Or, in a uv project:

Add the standard toolbox

The toolbox extra pulls in the tai42-toolbox contrib package — its generic tools and its composition extensions (chain, batch) load straight from a manifest:
See the standard toolbox guide for what ships in it.

Add an identity provider

Access control is on by default, and the runtime refuses to boot when no identity provider is registered — the skeleton ships none of its own. Install the Redis-backed API-key provider and name it in the manifest — that is the pairing every install starts from:
manifest.yml
The provider stores key hashes in Redis, so an access-controlled server needs a reachable Redis instance. Access control explains the policy model, and the access-control guide mints the first key. For local work against tools that need no auth, turn the gate off with ACCESS_CONTROL_ENABLE=false instead.

Install from source

To run the skeleton itself — to read the code, run the shipped examples, or build on an unreleased change — clone the tai42 monorepo and install the skeleton (at core/skeleton) into a fresh environment with --no-sources:
--no-sources is what makes this single-package install stand on its own. tai42-skeleton’s [tool.uv.sources] points its sibling tai42-* dependencies at their monorepo workspace members for development; the flag ignores those overrides and resolves them from PyPI instead. Install ".[toolbox]" instead of . for the standard toolbox, or ".[dev]" for the test and lint tooling. Run the checkout’s commands with uv run --no-sync, which uses the environment exactly as installed. A bare uv run re-syncs the project first, which puts the [tool.uv.sources] overrides back and fails in a clone that has no sibling checkouts beside it.

CLI-only install

To operate a running server from another machine, install just the command-line client — it pulls in none of the server runtime:
Or, in a uv project:
This puts the tai command on your path with the remote command groups — thin clients over a server’s /api/* routes. The full local tree (tai serve, tai db, …) appears only when tai42-skeleton is installed alongside.

The tai command

Installing the package puts the entrypoint on your path under two names, tai and tai42. Both run the same command tree — tai is the documented one, and tai42 is an alias for environments where an unrelated tai already sits on your PATH. Three subcommands run the long-lived processes:
  • tai serve — run the MCP server.
  • tai backend — run the agent / worker backend process.
  • tai metrics — serve the Prometheus metrics endpoint.
Run tai --help for the full command tree, or browse the CLI reference. Next, boot a server and call a tool in the quickstart.