Skip to content

Updating DjinnBot

DjinnBot is actively developed. Updating keeps you on the latest agents, pipelines, and features — without losing your data or configuration.

Check for Updates

The dashboard and CLI both check for available updates:

# CLI
djinn status    # Shows current version and update availability

# API
curl http://localhost:8000/v1/updates/check

Update via CLI

The recommended way to update:

djinn update

This command:

  1. Pulls the latest code from GitHub (git pull)
  2. Pulls updated Docker images
  3. Rebuilds containers (build-from-source mode) or pulls new pre-built images (GHCR mode)
  4. Restarts the stack
  5. Runs database migrations automatically on API server startup

Your data is preserved — PostgreSQL, Redis, and JuiceFS/RustFS volumes are never touched during updates.

Manual Update

If you prefer to update manually:

Build-from-Source Mode

cd ~/djinnbot        # or wherever you cloned the repo

# Pull latest code
git pull origin main

# Rebuild and restart
docker compose build
docker compose up -d

Pre-Built Image Mode (GHCR)

cd ~/djinnbot

git pull origin main

# Pull latest pre-built images
COMPOSE_FILE=docker-compose.ghcr.yml docker compose pull

# Restart with new images
COMPOSE_FILE=docker-compose.ghcr.yml docker compose up -d

What Gets Updated

ComponentHow It Updates
API serverRebuilt from Dockerfile.server (or pulled from GHCR). Database migrations run automatically on startup.
Pipeline engineRebuilt from Dockerfile.engine (or pulled from GHCR).
DashboardRebuilt from Dockerfile.dashboard (or pulled from GHCR).
mcpo proxyRebuilt from Dockerfile.mcpo (or pulled from GHCR).
Agent runtimeThe pre-built image is pulled automatically. Override with AGENT_RUNTIME_IMAGE in .env.
Agent personasUpdated via git pull — persona files live in agents/.
PipelinesUpdated via git pull — pipeline YAML lives in pipelines/.
SkillsUpdated via git pull — skill files live in skills/ and agents/_skills/.

What Is Preserved

DataStorageSafe?
Database (runs, projects, users, settings)postgres-data Docker volumeYes
Redis (event streams, JuiceFS metadata)redis-data Docker volumeYes
File storage (vaults, sandboxes, workspaces)rustfs-data Docker volumeYes
JuiceFS cachejuicefs-cache Docker volumeYes
Your .env configurationLocal fileYes
Custom agent personas you addedLocal files in agents/Yes (git-tracked)
Custom pipelines you addedLocal files in pipelines/Yes (git-tracked)
Never run docker compose down -v unless you intend to delete all data. The -v flag removes Docker volumes, which destroys your database, Redis state, and file storage. Use docker compose down (without -v) to stop services while preserving data.

Checking the Update

After updating, verify everything is healthy:

# Check all services are running
docker compose ps

# Check API health
curl http://localhost:8000/v1/status

# Check version
djinn status

If the API server fails to start after an update, check the logs:

docker logs djinnbot-api

The most common issue is a new required environment variable. Check the Configuration reference and compare with your .env.

Pinning a Version

If you need to stay on a specific version:

# Check out a specific tag
git checkout v0.1.0

# Or pin the GHCR image version in .env
DJINNBOT_VERSION=0.1.0