Upgrading
Update an installation to a new release, and what to change when you move from 2.1.0 to 2.2.0.
An update replaces the PentAGI images and, when the release changed them, the compose files. Your .env and the data volumes stay, and database migrations run when PentAGI starts.
Before you start
-
Read the release notes of every version after the one you run; since 2.1.0 they include upgrade notes.
-
Back up the database. Neither the installer nor PentAGI does it, and migrations cannot be rolled back without losing data. With the default
PENTAGI_andPOSTGRES_ USER PENTAGI_:POSTGRES_ DB docker exec pgvector pg_dump -U postgres -Fc pentagidb > pentagi-backup.dumpKeep copies of
.envand the compose files as well: the installer replaces compose files without a backup. -
Finish the flowsflowOne run of PentAGI: a goal, the tasks created from your messages, and everything the agents did along the way. you no longer need. A sandboxsandboxThe isolated Docker container in which agents run their tools. The interface shows it as Terminal. that is still running is reused as it was created, with the settings of the release that created it.
-
Coming from 2.1.0, make the changes in From 2.1.0 to 2.2.0 to
.envand the files next to it before the new release starts. With Google or GitHub sign-in on, emptyOAUTH_andGOOGLE_ CLIENT_ ID OAUTH_now; the section explains why.GITHUB_ CLIENT_ ID
Docker Compose
-
Download the compose files of the new release next to your
.env:docker-compose.ymland the file of each optional stack you run. The PentAGI container receives only the variables its compose file lists, so new settings in.envhave no effect behind an older file.cd ~/pentagi curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose.yml # and the file of each optional stack you run, for example: curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose-langfuse.yml -
Pull the images and restart, with the same
-ffiles you start the stack with. Withoutpull,up -dkeeps the images already on the host.docker compose pull && docker compose up -d -
Refresh the sandbox image on the Docker host that runs the flows, which
docker compose pulldoes not do. Flows created afterwards use it.docker pull vxcontrol/kali-linux
The latest image tag follows the main branch. To stay on one release, set PENTAGI_ in .env.
Installer
- Download the installer of the new release from Quick start and run it with your
.env. The 2.1.0 installer cannot update itself. - To replace the compose files, change a setting so that Apply Changes appears in the menu, choose it and answer
ywhen the installer lists the out-of-date files. - In the maintenance menu, run Update PentAGI to pull the new images, and Update Worker Image when it is offered. Update PentAGI on its own keeps the old compose files.
From 2.1.0 to 2.2.0
Files
- The compose file mounts
example.bedrock.provider.ymlnext to it. The installer creates it; on a manual install create it yourself, an empty file is enough:touch example.bedrock.provider.yml. - Replace
docker-compose-langfuse.ymlif you run Langfuse: the 2.1.0 file names theminio/image, which is no longer published, sominio docker compose pullfails with it. If your.envsetsMINIO_, remove that line.IMAGE=minio/ minio:… - For the knowledge graphknowledge graphThe graph of hosts, services, vulnerabilities and the access between them that PentAGI builds during a test when this optional feature is enabled. It shows how findings connect., put
examples/from the repository atneo4j ./— Graphiti needs its APOC plugin — and see Memory and knowledge for the model presets.neo4j GRAPHITI_is no longer read.MODEL_ NAME - Eight database migrations run at the first start.
docker compose logs pentagishows "Database schema updated successfully" when they are done.
Sign-in and access
- Everyone signs in again: sessions from 2.1.0 are refused. API tokens keep working, and scripts log out with
POST /.api/ v1/ auth/ logout - An API token gets 403 on the REST
/,users /androles /routes: manage accounts, roles and tokens from a signed-in browser session.tokens - Google and GitHub sign-in now signs a provider-verified email into the existing account with that address, local accounts included, with that account's role. 2.1.0 cannot change an account's email, so if sign-in is on, upgrade with
OAUTH_andGOOGLE_ CLIENT_ ID OAUTH_empty, moveGITHUB_ CLIENT_ ID [email protected]to an address you control under Settings → Account, then turn sign-in back on. The installer's Reset Admin Password finds the administrator only by[email protected]. - Behind a reverse proxy, set
TRUSTED_, or every user shares the proxy's address and one burst of failed sign-ins locks everyone out for 15 minutes — see Network exposure.PROXIES
Sandboxes
- With
DOCKER_— the 2.1.0INSIDE=true .envtemplate and installer default — 2.1.0 mounted the host Docker socket into every sandbox. 2.2.0 gives agentsagentAn AI agent of PentAGI: a model with its own prompt, settings and tools that does one kind of work in a flow, such as testing, writing code or searching the web. Docker only from a separate daemon set inDOCKER_; without it they get none, and the log saysINSIDE_ HOST sandbox DISABLED. WithDOCKER_, setINSIDE_ HOST DOCKER_empty, or the template'sSOCKET= /is still mounted. See Worker node.var/ run/ docker.sock - Finish the flows started on 2.1.0: their sandboxes keep the old socket mount and capabilities until the flow is finished.
- Leave
TENANT_empty: on an existing installation it points PentAGI at a new, empty schema.ID
Models and prompts
- The custom providerproviderA service or server that gives PentAGI its language models, such as OpenAI, Anthropic or a local Ollama. needs
LLM_: with an empty key it is disabled, so for a server without authentication set any non-empty value.SERVER_ KEY LLM_is removed. The custom provider sendsSERVER_ LEGACY_ REASONING reasoning_and turns aeffort reasoning.max_budget into an effort level; on Kimi K2, GLM before 5.2 and MiniMax M models a budget now fails the call, so remove it from those agents.tokens - In provider config files, an agent entry that leaves
max_,tokens temperature,top_orp nblank now gets the provider type's defaults instead of sending nothing. - Built-in default models changed for every provider except Bedrock; providers saved in Settings → Providers keep their models. Five configs bundled in the image changed models —
openrouter,deepinfra,ollama-cloud,moonshotanddeepseek. IfLLM_orSERVER_ CONFIG_ PATH OLLAMA_points at one of them underSERVER_ CONFIG_ PATH /, keep the 2.1.0 file on the host and mount it as the custom or Ollama config instead.opt/ pentagi/ conf/ - With
EMBEDDING_on a server other than OpenAI's, setURL EMBEDDING_:KEY OPEN_is no longer sent there.AI_ KEY - Agents search through one
web_tooltoolWhat an agent acts through: a built-in capability such as the terminal, the isolated browser or web search, or a program in the sandbox such as nmap, metasploit or sqlmap.. Custom prompts withsearch {{.GoogleToolName}}and the other per-engine variables are ignored, with a warning in the log, until they use{{.WebSearchToolName}}; rebase custom searcher and pentester prompts on the new defaults.
Other changes
- Within two minutes of starting and then every three hours, PentAGI reports its version and a summary of the installation to
update.pentagi.com; Update check lists what it sends, andUPDATE_turns it off.CHECK_ INTERVAL=0 - The profiler no longer listens on port 7777 unless
PPROF_is set.ADDR - New optional settings include provider failover with
LLM_,FALLBACK_ PROVIDER DOCKER_for several instances,PORTS_ BASE DOCKER_andIMAGE_ SELECTION_ MODE DOCKER_, the internal search enginesearch engineA web search service that agents use to gather fresh information, such as DuckDuckGo, Google or Tavily.ALLOWED_ IMAGES WEB_, and the Mistral, xAI, MiniMax and Firecrawl keys.SEARCH_ INTERNAL_ ENABLED
Back up and roll back
PentAGI never runs migrations backwards, and running them by hand deletes data, so the way back to 2.1.0 is the backup. Stop the services that use the database, recreate it and restore the dump:
docker compose stop pentagi pgexporter
docker exec pgvector dropdb -U postgres pentagidb
docker exec pgvector createdb -U postgres pentagidb
docker exec -i pgvector pg_restore -U postgres -d pentagidb < pentagi-backup.dumpThen put back the saved .env and compose files, set PENTAGI_ and start the stack. Keep the new docker-compose-langfuse.yml: the MinIO image of the 2.1.0 file can no longer be pulled.
Last updated on