Install Auto Learning Agents with Docker

Updated June 2026
Docker is the recommended way to run Auto Learning Agents. The image bundles everything the platform needs, the Elixir runtime, the Python services, the local database, and the full tool layer, so you go from nothing to a running agent system with a handful of commands.

This guide takes you from a clean machine to a working install with the web UI open in your browser. The whole process takes a few minutes plus the initial image build. If you would rather run the platform directly on a Linux server without containers, the server installation guide covers that path.

What the Image Includes

The Dockerfile builds the complete platform in one image: the Elixir/OTP release that supervises every agent, PHP with the extensions the tool layer uses, Python with sentence-transformers for embeddings, Playwright with Chromium for browser automation, and Apache serving the web UI. A single start script brings up Apache and the release together, so one container runs the entire system. The compose file also wires up persistent volumes for everything that matters, which means you can rebuild or upgrade the container freely without losing data.

Install Docker

Install Docker and Docker Compose for your operating system if you do not already have them. On Linux, your distribution's docker.io or docker-ce package plus the compose plugin is all you need. On macOS and Windows, Docker Desktop includes both. Everything else the platform needs lives inside the container, so Docker is the only requirement on the host machine.

Clone the Repository

Pull the source from GitHub and move into the project directory:

git clone https://github.com/AIAppsAPI/auto-learning-agents
cd auto-learning-agents

Configure Your Environment

Copy the example environment file and open it in any editor:

cp .env.example .env

The .env.example file documents every available option. The essentials are your AI provider access and your memory backend choice. Set MEMORY_BACKEND to local for the zero-config default, sentence-transformers embeddings with sqlite-vec vector search stored in SQLite, or to adaptive_recall with your ADAPTIVE_RECALL_URL and ADAPTIVE_RECALL_TOKEN for the premium memory upgrade with knowledge graphs and smarter retrieval. Values from .env are applied into the persisted settings.txt every time the container starts, so changing .env and restarting is all it takes to reconfigure later.

Start the Container

Build and start the platform in the background:

docker-compose up -d

The first run builds the image, which takes a few minutes while the Elixir release compiles and the Python dependencies install. Every run after that starts in seconds. The container restarts automatically with the host unless you stop it yourself.

Log In to Your AI Provider

If you are using Claude through a subscription, log in once inside the container:

docker compose exec -u ala ala claude login

The login persists in a volume, so it survives container rebuilds and upgrades. You only do this once. API-key based providers and local Ollama models are configured through .env instead, and the AI models guide covers every option and where each one fits.

Open the Web UI

Visit http://localhost:80 in your browser and sign in. The web UI is the whole system in one place: the dashboard with your agents, chat with the master agent, the file browser, and configuration. The best first move is a conversation, the master agent knows the entire platform and can walk you through setting up each area interactively.

Where Your Data Lives

The compose file mounts persistent volumes for every directory that holds state, so your data survives rebuilds, upgrades, and container replacement. The database volume holds the SQLite database with your memories, conversations, topics, and knowledge bases, along with the persisted settings.txt, so passwords and runtime settings carry across rebuilds. Separate volumes hold the markdown memory files you edit from the UI, conversation history, active work queues for the coding and research pipelines, platform configuration, node activity logs, generated project files, and your Claude login. Backing up the system means backing up the volumes, and nothing else.

Ports

Two ports are published. Port 80 serves the web UI. Port 9500 is the memory bank service socket the tools use. If port 80 is taken on your machine, change the mapping in docker-compose.yml to any free port, for example "8080:80", and browse to that port instead.

Reconfiguring and Upgrading

Configuration changes follow one simple rule: edit .env, then restart the container. The start script reapplies your .env values into the persisted settings into the data volume on every boot. Platform-specific settings, like chatbot platforms, email and SMS providers, and social accounts, live in the config volume and are managed from the Config tab in the UI while the system runs. Upgrading the platform is a pull and a rebuild:

git pull
docker-compose up -d --build

Because every stateful directory is a volume, the new container picks up exactly where the old one left off, same memories, same conversations, same agents, same login.

Key Takeaway

Clone the repository, copy .env.example to .env with your keys, run docker-compose up -d, and log in to your provider. One container runs the whole platform, and every piece of state lives in a volume you own.