Docker (Legacy Reference)
For local development you do not need Docker at all. Run everything with the
machina CLI:
npx machina dev (hot reload) or npx machina start. See Installation for
the full local setup (Node.js 22+, Python 3.12+, uv).Prerequisites
- Docker 20.10+
- Docker Compose 2.0+
- 2GB RAM minimum
Historical Quick Start
- frontend - React app on port 3000
- backend - FastAPI server on port 3010
- whatsapp - Go WhatsApp service on port 9400
- redis - Cache on port 6379 (optional)
This container topology does not include Temporal, which the current runtime supervises
in-process (gRPC on 7233, Web UI on 8080) via the pooch-downloaded
temporal CLI, nor the
persistent Node.js executor sidecar (port 3020) the backend now runs alongside itself.Container Overview
| Container | Image | Port | Purpose |
|---|---|---|---|
| frontend | machinaos-frontend | 3000 | React UI (nginx) |
| backend | machinaos-backend | 3010 | FastAPI API server |
| machinaos-whatsapp | 9400 | WhatsApp bridge | |
| redis | redis:7-alpine | 6379 | Cache (optional) |
Configuration
Environment Variables
MachinaOs bootstraps its configuration from.env.template (copy it to .env and override).
For the legacy container stack, the relevant variables were:
API keys for LLM providers are managed in the app’s Credentials modal and stored encrypted
in a separate
credentials.db. You do not set OPENAI_API_KEY / ANTHROPIC_API_KEY as
environment variables.Redis (Optional)
Redis is disabled by default for local development. To enable:Common Commands
Accessing Services
After starting, access:| Service | URL |
|---|---|
| Frontend | http://localhost:3000 |
| Backend API | http://localhost:3010 |
| Health Check | http://localhost:3010/health |
| WebSocket | ws://localhost:3010/ws/status |
Health Checks
All containers include health checks:version field reflects the installed package version):
Troubleshooting
Container won't start
Container won't start
Check logs for errors:Common issues:
- Port already in use: Change port in
.env - Missing environment variables: Check
.envfile exists
Frontend can't connect to backend
Frontend can't connect to backend
- Verify both containers are running:
docker-compose ps - Check network: containers should be on same network
- Check CORS settings in backend
.env
WhatsApp service issues
WhatsApp service issues
Out of disk space
Out of disk space
Clean up Docker resources:
Resource Usage
Typical resource consumption:| Container | Memory | CPU |
|---|---|---|
| frontend | ~50 MB | Low |
| backend | ~150 MB | Medium |
| ~30 MB | Low | |
| redis | ~10 MB | Low |
Data Persistence
Data is stored in Docker volumes:| Volume | Purpose |
|---|---|
| backend-data | SQLite database, uploads |
| whatsapp-data | WhatsApp session |
| redis-data | Cache data |
Development Mode
For local development you do not use Docker. Run everything with themachina CLI:
Next Steps
Production Deployment
The recommended path: one-command
machina deploy up to a cloud VMInstallation
Local setup and full configuration reference