AI-powered Linux & Windows server management — natural language control via Claude AI agents.
10K+
AI-powered Linux server management. No SSH. No scripts. No risk.
Tell Claude what you need — ManageLM agents execute it locally using a local LLM, scoped to only the commands you allow. Connect your servers via lightweight agents and manage them through Claude using plain English.
→ Full documentation · Docker installation guide · managelm.com
| Image | Includes | Best for |
|---|---|---|
managelm/portal:latest | Portal only | Production — bring your own PostgreSQL & Redis |
managelm/portal:allinone | Portal + PostgreSQL + Redis | Quick evaluation, testing |
Single container, no external dependencies. Best for evaluation and testing.
docker run -d \
--name managelm \
-p 3000:3000 \
-e SERVER_URL=http://YOUR_IP:3000 \
-e JWT_SECRET=$(openssl rand -hex 32) \
-e [email protected] \
-e POSTGRES_PASSWORD=change-me-strong-password \
-v managelm_pgdata:/data/postgres \
-v managelm_redisdata:/data/redis \
--restart unless-stopped \
managelm/portal:allinone
⚠ Not recommended for production — database and container share the same lifecycle.
Bring your own PostgreSQL 16+ and Redis 7+.
# 1. PostgreSQL
docker run -d --name managelm-db \
-e POSTGRES_DB=managelm \
-e POSTGRES_USER=managelm \
-e POSTGRES_PASSWORD=your-db-password \
-v managelm_pgdata:/var/lib/postgresql/data \
--restart unless-stopped \
postgres:16-alpine
# 2. Redis
docker run -d --name managelm-redis \
-v managelm_redisdata:/data \
--restart unless-stopped \
redis:7-alpine redis-server --appendonly yes
# 3. Portal
docker run -d --name managelm \
-p 3000:3000 \
-e SERVER_URL=https://managelm.example.com \
-e JWT_SECRET=$(openssl rand -hex 32) \
-e [email protected] \
-e DATABASE_URL=postgresql://managelm:your-db-password@managelm-db:5432/managelm \
-e REDIS_URL=redis://managelm-redis:6379 \
--link managelm-db --link managelm-redis \
--restart unless-stopped \
managelm/portal:latest
Or use the recommended Docker Compose setup:
mkdir managelm && cd managelm
curl -O https://app.managelm.com/doc/docker-compose.yml
# Edit SERVER_URL, JWT_SECRET, SMTP_FROM, POSTGRES_PASSWORD
docker compose up -d
| Variable | Description |
|---|---|
SERVER_URL | Public URL that browsers and agents use to reach the portal. Must be externally reachable — agents derive their WebSocket URL from this value. E.g. https://managelm.example.com |
JWT_SECRET | Random 32+ char secret. Generate with: openssl rand -hex 32 |
SMTP_FROM | Sender email address for account verification, password resets, and team invitations |
POSTGRES_PASSWORD | PostgreSQL password — allinone image only |
DATABASE_URL | PostgreSQL connection string — portal-only image. E.g. postgresql://user:pass@host:5432/managelm |
REDIS_URL | Redis connection string — portal-only image. E.g. redis://host:6379 |
| Variable | Default | Description |
|---|---|---|
SERVER_PORT | 3000 | Portal listen port |
LOG_LEVEL | info | One of trace, debug, info, warn, error, fatal, silent |
SMTP_HOST | — | SMTP server hostname. Email is disabled when not set |
SMTP_PORT | 25 | SMTP port |
SMTP_SECURE | none | none, starttls, or tls |
SMTP_USER / SMTP_PASS | — | SMTP credentials |
DB_SSL | none | none, require, verify, or verify-ca |
REDIS_TLS | auto | auto, on, or off |
CLUSTER_WORKERS | 2 | Node.js cluster workers. Set to 1 to disable clustering |
TASK_TIMEOUT_SECONDS | 300 | Max task duration |
JWT_ACCESS_EXPIRY | 1h | Access token lifetime |
JWT_REFRESH_EXPIRY | 7d | Refresh token lifetime |
WebSocket support is required for agent connections.
nginx
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
Apache
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:3000/$1 [P,L]
ProxyTimeout 86400
SERVER_URL — the first user becomes account ownerhttps://your-host/mcplinux/amd64 — x86-64 servers and VMslinux/arm64 — AWS Graviton, Raspberry Pi, Apple M-seriesdocker compose pull
docker compose up -d
Migrations run automatically on startup.
Content type
Image
Digest
sha256:4169cb131…
Size
196.5 MB
Last updated
4 days ago
docker pull managelm/portal:allinone