LocalAGI is a powerful, self-hostable AI Agent platform designed for maximum privacy and flexibility. A complete drop-in replacement for OpenAI's Responses APIs
LocalAGI is a powerful, self-hostable AI Agent platform designed for maximum privacy and flexibility. A complete drop-in replacement for OpenAI's Responses APIs
Create customizable AI assistants, automations, chat bots and agents that run 100% locally. No need for agentic Python libraries or cloud service keys, just bring your GPU (or even just CPU) and a web browser.
LocalAGI is a powerful, self-hostable AI Agent platform that allows you to design AI automations without writing code. Create Agents with a couple of clicks, connect via MCP, and use built-in Skills (manage skills in the Web UI and enable them per agent). Every agent exposes a complete drop-in replacement for OpenAI's Responses APIs with advanced agentic capabilities. No clouds. No data leaks. Just pure local AI that works on consumer-grade hardware (CPU and GPU). Skills follow the skillserver format and can be created, imported, or synced from git.
Are you tired of AI wrappers calling out to cloud APIs, risking your privacy? So were we.
LocalAGI ensures your data stays exactly where you want it—on your hardware. No API keys, no cloud subscriptions, no compromise.
…Now you can access and manage your agents at http://localhost:8080
Still having issues? see this Youtube video: https://youtu.be/HtVwIxW3ePg
LocalAI is now part of a comprehensive suite of AI tools designed to work together:
LocalAGI supports multiple hardware configurations through Docker Compose profiles:
docker compose -f docker-compose.nvidia.yaml upgemma-3-4b-it-qatmoondream2-20250414sd-1.5-ggmlMODEL_NAME: Text model to useMULTIMODAL_MODEL: Multimodal model to useIMAGE_MODEL: Image generation model to useLOCALAI_SINGLE_ACTIVE_BACKEND: Set to true to enable single active backend modedocker compose -f docker-compose.intel.yaml upgemma-3-4b-it-qatmoondream2-20250414sd-1.5-ggmlMODEL_NAME: Text model to useMULTIMODAL_MODEL: Multimodal model to useIMAGE_MODEL: Image generation model to useLOCALAI_SINGLE_ACTIVE_BACKEND: Set to true to enable single active backend modeYou can customize the models used by LocalAGI by setting environment variables when running docker-compose. For example:
# CPU with custom model
MODEL_NAME=gemma-3-12b-it docker compose up
# NVIDIA GPU with custom models
MODEL_NAME=gemma-3-12b-it \
MULTIMODAL_MODEL=moondream2-20250414 \
IMAGE_MODEL=flux.1-dev-ggml \
docker compose -f docker-compose.nvidia.yaml up
# Intel GPU with custom models
MODEL_NAME=gemma-3-12b-it \
MULTIMODAL_MODEL=moondream2-20250414 \
IMAGE_MODEL=sd-1.5-ggml \
docker compose -f docker-compose.intel.yaml up
# With custom actions directory
LOCALAGI_CUSTOM_ACTIONS_DIR=/app/custom-actions docker compose upIf no models are specified, it will use the defaults:
gemma-3-4b-it-qatmoondream2-20250414sd-1.5-ggmlGood (relatively small) models that have been tested are:
qwen_qwq-32b (best in co-ordinating agents)gemma-3-12b-itgemma-3-27b-itExplore detailed documentation including:
LocalAGI supports environment configurations. Note that these environment variables needs to be specified in the localagi container in the docker-compose file to have effect.
| Variable | What It Does |
|---|---|
LOCALAGI_MODEL |
Your go-to model |
LOCALAGI_MULTIMODAL_MODEL |
Optional model for multimodal capabilities |
LOCALAGI_LLM_API_URL |
OpenAI-compatible API server URL |
LOCALAGI_LLM_API_KEY |
API authentication |
LOCALAGI_TIMEOUT |
Request timeout settings |
LOCALAGI_STATE_DIR |
Where state gets stored |
LOCALAGI_LOCALRAG_URL |
Optional URL when using an external LocalRAG URL; not used for built-in knowledge base |
LOCALAGI_BASE_URL |
Optional base URL for the app (defaults to ":3000") |
LOCALAGI_ENABLE_CONVERSATIONS_LOGGING |
Toggle conversation logs |
LOCALAGI_API_KEYS |
A comma separated list of api keys used for authentication |
LOCALAGI_CUSTOM_ACTIONS_DIR |
Directory containing custom Go action files to be automatically loaded |
For the built-in knowledge base, optional env (defaults use LOCALAGI_STATE_DIR): COLLECTION_DB_PATH, FILE_ASSETS, VECTOR_ENGINE (e.g. chromem, postgres), EMBEDDING_MODEL, DATABASE_URL (when VECTOR_ENGINE=postgres).
Skills are stored in a fixed skills subdirectory under LOCALAGI_STATE_DIR (e.g. /pool/skills in Docker). Git repo config for skills lives in that directory. No extra environment variables are required.
Download ready-to-run binaries from the Releases page.
Requirements:
# Clone repo
git clone https://github.com/mudler/LocalAGI.git
cd LocalAGI
# Build it
cd webui/react-ui && bun i && bun run build
cd ../..
go build -o localagi
# Run it
./localagiLocalAGI can be used as a Go library to programmatically create and manage AI agents. Let's start with a simple example of creating a single agent:
Basic Usage: Single Agent…This basic example shows how to:
For managing multiple agents, you can use the AgentPool system:
…Key features available through the library:
For more details about available configuration options and features, refer to the Agent Configuration Reference section.
LocalAGI provides two powerful ways to extend its functionality with custom actions:
LocalAGI supports custom actions written in Go that can be defined inline when creating an agent. These actions are interpreted at runtime, so no compilation is required.
You can also place custom Go action files in a directory and have LocalAGI automatically load them. Set the LOCALAGI_CUSTOM_ACTIONS_DIR environment variable to point to a directory containing your custom action files. Each .go file in this directory will be automatically loaded and made available to all agents.
Example setup:
# Set the environment variable
export LOCALAGI_CUSTOM_ACTIONS_DIR="/path/to/custom/actions"
# Or in docker-compose.yaml
environment:
- LOCALAGI_CUSTOM_ACTIONS_DIR=/app/custom-actionsDirectory structure:
custom-actions/
├── weather_action.go
├── file_processor.go
└── database_query.goEach file should contain the three required functions (Run, Definition, RequiredFields) as described below.
When creati
No open issues yet, or sync has not completed.