Before you start
You need:- A PostgreSQL database reachable by the service, with permission to apply the repository’s migrations.
- A stable public HTTPS URL for the dashboard and connector webhooks, with TLS handled by your hosting platform or reverse proxy.
- A securely stored
MESH_AGENT_MASTER_KEYbefore saving credentials. Preserve the same value across restarts and restores, outside the database. - Access to the Mesh container image or source repository. While the package is private, your container host needs a GitHub credential with package read access.
ghcr.io/texturehq/mesh:latest. For repeatable deployments,
pin an image digest or a commit tag produced by the repository’s image workflow.
The current workflow builds Linux AMD64 images.
Start the service
Supply your database URL and master key through your hosting platform’s secret settings or shell environment. The following assumesDATABASE_URL and
MESH_AGENT_MASTER_KEY are already set:
https://mesh.example.com with your installation’s actual URL and route
it to the container. Mesh listens on HTTP_ADDR; it does not read a platform’s
PORT variable. Migrations run at startup by default. Agent state and encrypted
credentials live in PostgreSQL, so preserve the database when replacing a container.
Check GET /health for process liveness, then open the dashboard. Liveness does
not verify that every connector, model provider, or execution backend is working.
Essential configuration
Agent names, model selections, and connector credentials are configured in the
dashboard, not as per-agent environment variables. The process-level
OPENROUTER_API_KEY is a legacy fallback, not the normal setup path.
For advanced deployment options, consult the repository’s
environment example (repository)
and configuration loader (repository).