Personal AI Agent System
3.1K
OpenCaddis
AI agent orchestration app with multi-agent chat, configurable plugins, and persistent memory. Built with https://learn.microsoft.com/en-us/aspnet/core/blazor/ and the https://github.com/vulcan365/Fabr agent framework.
For full documentation see the https://github.com/vulcan365/OpenCaddis.
Quick Start
docker pull vulcan365/opencaddis
Run the container:
Linux / macOS:
docker run -d
-p 5000:5000
-v opencaddis-data:/app/data
-v opencaddis-keys:/app/.keys
--name opencaddis
vulcan365/opencaddis
Windows (PowerShell):
docker run -d -p 5000:5000
-v opencaddis-data:/app/data -v opencaddis-keys:/app/.keys
--name opencaddis `
vulcan365/opencaddis
Open your browser to http://localhost:5000 and go to Settings to configure your AI model endpoint and API key. The app creates its config files automatically when you save.
Persisting Configuration
To persist configuration across docker rm, bind-mount the config files. Create them first on the host from the https://github.com/vulcan365/OpenCaddis/tree/main/src/OpenCaddis:
curl -O https://raw.githubusercontent.com/vulcan365/OpenCaddis/main/src/OpenCaddis/fabr.json.example curl -O https://raw.githubusercontent.com/vulcan365/OpenCaddis/main/src/OpenCaddis/opencaddis.json.example mv fabr.json.example fabr.json mv opencaddis.json.example opencaddis.json
Then add them to the run command:
Linux / macOS:
docker run -d
-p 5000:5000
-v ./fabr.json:/app/fabr.json
-v ./opencaddis.json:/app/opencaddis.json
-v opencaddis-data:/app/data
-v opencaddis-keys:/app/.keys
--name opencaddis
vulcan365/opencaddis
Windows (PowerShell):
docker run -d -p 5000:5000
-v ${PWD}\fabr.json:/app/fabr.json -v ${PWD}\opencaddis.json:/app/opencaddis.json
-v opencaddis-data:/app/data -v opencaddis-keys:/app/.keys
--name opencaddis `
vulcan365/opencaddis
Volumes
┌──────────────────────┬────────────────────────────────────────────┐ │ Volume │ Purpose │ ├──────────────────────┼────────────────────────────────────────────┤ │ /app/data │ SQLite vector database (persistent memory) │ ├──────────────────────┼────────────────────────────────────────────┤ │ /app/.keys │ ASP.NET data protection keys │ ├──────────────────────┼────────────────────────────────────────────┤ │ /app/fabr.json │ Model endpoint and API key config │ ├──────────────────────┼────────────────────────────────────────────┤ │ /app/opencaddis.json │ Agent and plugin config │ ├──────────────────────┼────────────────────────────────────────────┤ │ /working │ Mount point for plugin working directories │ └──────────────────────┴────────────────────────────────────────────┘
Working Directory for Plugins
Plugins like FileSystem, PowerShell, and TaskManager default to /tmp/OpenCaddis/ inside the container, which doesn't persist. Mount a host directory to /working and configure plugin root paths in Settings > Agents:
Linux / macOS:
docker run -d
-p 5000:5000
-v ~/opencaddis-working:/working
-v opencaddis-data:/app/data
-v opencaddis-keys:/app/.keys
--name opencaddis
vulcan365/opencaddis
Windows (PowerShell):
docker run -d -p 5000:5000
-v C:\temp\opencaddis-working:/working -v opencaddis-data:/app/data
-v opencaddis-keys:/app/.keys --name opencaddis
vulcan365/opencaddis
Then set the plugin paths in your agent's Args (container paths, same on every host):
┌─────────────────────────────┬───────────────────────┐ │ Arg │ Example value │ ├─────────────────────────────┼───────────────────────┤ │ FileSystem:RootPath │ /working/files/ │ ├─────────────────────────────┼───────────────────────┤ │ PowerShell:WorkingDirectory │ /working/ │ ├─────────────────────────────┼───────────────────────┤ │ TaskManager:RootPath │ /working/tasks/ │ ├─────────────────────────────┼───────────────────────┤ │ WebBrowser:ScreenshotPath │ /working/screenshots/ │ └─────────────────────────────┴───────────────────────┘
Docker Compose
services: opencaddis: image: vulcan365/opencaddis ports: - "5000:5000" volumes: - ~/opencaddis-working:/working # Linux/macOS # - C:\temp\opencaddis-working:/working # Windows - opencaddis-data:/app/data - opencaddis-keys:/app/.keys restart: unless-stopped
volumes: opencaddis-data: opencaddis-keys:
docker compose up -d
Environment
┌────────────────────────┬───────────────┬─────────────────────┐ │ Variable │ Default │ Description │ ├────────────────────────┼───────────────┼─────────────────────┤ │ ASPNETCORE_URLS │ http://+:5000 │ Listening address │ ├────────────────────────┼───────────────┼─────────────────────┤ │ ASPNETCORE_ENVIRONMENT │ Production │ Runtime environment │ └────────────────────────┴───────────────┴─────────────────────┘
License
https://github.com/vulcan365/OpenCaddis/blob/main/LICENSE. Depends on https://github.com/vulcan365/Fabr (Apache-2.0).
Content type
Image
Digest
sha256:718aee229…
Size
531.2 MB
Last updated
8 months ago
docker pull vulcan365/opencaddis