Skip to content
PentAGI
Getting started

Manual installation

Deploy PentAGI by hand with Docker Compose — create the working directory, fill in the .env file, add an LLM provider and start the stack.

Use the manual path when you want full control over the configuration or cannot run the interactive installer.

1. Create a working directory

mkdir -p ~/pentagi && cd ~/pentagi

2. Download the environment file

test -f .env || curl -fo .env.new https://raw.githubusercontent.com/vxcontrol/pentagi/main/.env.example
test -f .env.new && openssl rand -hex 32 | xargs -I VALUE sed -E -i.bak 's/^COOKIE_SIGNING_SALT=salt( .*)?$/COOKIE_SIGNING_SALT=VALUE/' .env.new
test -f .env.new && openssl rand -hex 16 | xargs -I VALUE sed -E -i.bak 's/^PENTAGI_POSTGRES_PASSWORD=postgres( .*)?$/PENTAGI_POSTGRES_PASSWORD=VALUE/' .env.new
test -f .env || mv .env.new .env

The compose file mounts three provider config files, so create them — empty files are fine:

touch example.custom.provider.yml example.ollama.provider.yml example.bedrock.provider.yml

If you plan to use a custom OpenAI-compatible endpoint or Ollama, fetch the example configs instead of the empty files and point LLM_SERVER_CONFIG_PATH or OLLAMA_SERVER_CONFIG_PATH in .env at /opt/pentagi/conf/custom.provider.yml or /opt/pentagi/conf/ollama.provider.yml. The custom example names OpenAI models, among them o3-mini, which OpenAI retires on 23 October 2026 — set each agent's model to one your endpoint serves:

curl -o example.custom.provider.yml https://raw.githubusercontent.com/vxcontrol/pentagi/main/examples/configs/custom-openai.provider.yml
curl -o example.ollama.provider.yml https://raw.githubusercontent.com/vxcontrol/pentagi/main/examples/configs/ollama-llama318b.provider.yml

3. Add at least one LLM provider

Edit .env and set the key of at least one provider:

OPEN_AI_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GEMINI_API_KEY=your_gemini_key

Other providers — AWS Bedrock, Ollama, DeepSeek, GLM, Kimi, Qwen, MiniMax, Mistral, xAI and custom endpoints — are described in LLM providers. Search engines are optional; DuckDuckGo and Sploitus need no key:

DUCKDUCKGO_ENABLED=true
SPLOITUS_ENABLED=true
TAVILY_API_KEY=your_tavily_key

4. Start the stack

curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose.yml
test -f .env && docker compose up -d

The web UI is served at https://localhost:8443. Sign in with [email protected] / admin and change the password.

The web UI and the other services are bound to localhost, but each flow's sandbox publishes two callback ports, from 28000–29999 by default, on every interface of the Docker host, and ufw does not filter them. On a host others can reach, restrict that range first — see Network exposure. To update the installation later, follow Upgrading.

Optional stacks

Each optional service ships as its own compose file that you layer on top of the base one:

StackCompose fileWhat it adds
LLM observabilitydocker-compose-langfuse.ymlLangfuse with ClickHouse, Redis and MinIO
Knowledge graphdocker-compose-graphiti.ymlGraphiti and Neo4j
System observabilitydocker-compose-observability.ymlGrafana, OpenTelemetry, VictoriaMetrics, Jaeger, Loki

For production and any environment where untrusted code runs, isolate the tool containers on a dedicated worker node.

Last updated on