wagmios
- Repo stars 55
- License Apache-2.0
- Author repo wagmios
WAGMIOS
Scope = Permission. API Only. No Workarounds.
Core Principle
The WAGMIOS API is the primary interface for container management. On Linux, Docker requires sudo — without root access, WAGMIOS is the only interface agents can use for homelab control. Do not:
- Execute
dockerCLI commands directly - Access the Docker socket or daemon
- Manipulate API keys or scopes
- Bypass scope restrictions through any means
If a scope is missing, the agent cannot do the task — ask the user to enable it.
Startup Check (First Interaction)
Before attempting any WAGMIOS operation:
- Confirm Docker is available — WAGMIOS manages Docker containers, so Docker must be running on the host
- Confirm backend is reachable — the backend port (default 5179) must be accessible
- Check key scopes — call
GET /api/auth/statusto know what the key can do
If Docker is not installed or running:
→ See references/docker-install.md for installation instructions by OS.
If WAGMIOS backend is not reachable: → Ask the user to confirm the backend is running at the provided URL.
Authentication
Every request requires the X-API-Key header. The user provides the key and base URL at runtime — do not store it.
Base URL: http://localhost:5179 (user provides, may differ for remote hosts)
Header: X-API-Key: <key>
Check key scopes first via GET /api/auth/status — this tells you what the key can do.
Credential handling:
- Keys are provided by the user at runtime, not stored by the agent
- The API key is scoped — it only allows what the user explicitly granted
- Do not log or expose the full key value
Scope Map
| Scope | Permitted Actions |
|---|---|
containers:read |
List containers, inspect, view logs |
containers:write |
Create, start, stop, restart containers |
containers:delete |
Remove containers (with user confirmation) |
images:read |
List Docker images |
images:write |
Pull and delete images |
templates:read |
Use saved container templates |
templates:write |
Create and edit templates |
marketplace:read |
Browse the app marketplace |
marketplace:write |
Install, start, stop marketplace apps |
Standard Workflow
- Verify scope — check
GET /api/auth/statusbefore attempting any action - Confirm — for destructive actions (delete), always confirm with user before executing
- Execute — call the appropriate API endpoint
- Report — return the result clearly
Decision Tree
User asks to do X
│
├── Missing scope for X?
│ YES → Tell user, ask them to enable it in Settings
│ NO → Continue
│
├── X is destructive (delete, stop)?
│ YES → Confirm with user before executing
│ NO → Execute immediately
│
└── Execute via API, report result
Multi-Machine Management
WAGMIOS supports managing multiple hosts from a single agent. Each machine runs its own WAGMIOS instance with its own URL and its own scoped API key.
How it works:
- User installs WAGMIOS on each machine they want to manage
- User creates a separate API key per machine, with only the scopes that machine needs
- User provides the agent with the URL and key for each machine
- Agent routes requests to the correct machine based on the user's request
Example:
User: "Install Jellyfin on the media server and make sure Nginx is running on the NAS."
Agent → POST media-server:5179/api/marketplace/create { "app_id": "jellyfin" }
Agent → GET nas:5179/api/containers
Agent → POST nas:5179/api/containers/nginx/start
"Jellyfin is installing on the media server (port 8096). Nginx is running on the NAS."
Key principle: Each instance is independent. The agent cannot move containers between machines, cannot escalate permissions beyond what a key allows, and each action is logged in the instance's own activity feed.
Safeguards
→ See references/safeguards.md
Docker Installation
→ See references/docker-install.md
API Reference
→ See references/api.md
Marketplace
→ See references/marketplace.md
Workflows
→ See references/workflows.md
Scope Reference
→ See references/scopes.md
- Fluxly category
- DevOps
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 94 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @mentholmike · Apache-2.0
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Manual integration
- External API key
- Required · Vendor-specific
- Detected OS requirements
- Linux · Docker
- Runtime requirements
- Docker
- Detected file/system behavior
-
- Read-only
- Write / modify
- Shell exec
- Detected network behavior
- External requests
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
The current SKILL.md does not define a fixed output example. The WAGMIOS API is the primary interface for container management. On Linux, Docker requires sudo — without root access, WAGMIOS is the only interface agents can use for homelab control. Do not: Execute docker CLI commands directly
Before attempting any WAGMIOS operation: Confirm Docker is available — WAGMIOS manages Docker containers, so Docker must be running on the host Confirm backend is reachable — the backend port (default 5179) must be accessible
Every request requires the X-API-Key header. The user provides the key and base URL at runtime — do not store it. Check key scopes first via GET /api/auth/status — this tells you what the key can do. Credential handling:
Scope · Permitted Actions containers:read · List containers, inspect, view logs containers:write · Create, start, stop, restart containers
Verify scope — check GET /api/auth/status before attempting any action Confirm — for destructive actions (delete), always confirm with user before executing Execute — call the appropriate API endpoint
Decision Tree
# WAGMIOS
**Scope = Permission. API Only. No Workarounds.**
## Core Principle
The WAGMIOS API is the **primary interface** for container management. On Linux, Docker requires sudo — without root access, WAGMIOS is the only interface agents can use for homelab control. Do not:
- Execute `docker` CLI commands directly
- Access the Docker socket or daemon
- Manipulate API keys or scopes
- Bypass scope restrictions through any means
**If a scope is missing, the agent cannot do the task — ask the user to enable it.**
---
## Startup Check (First Interaction)
Before attempting any WAGMIOS operation:
1. **Confirm Docker is available** — WAGMIOS manages Docker containers, so Docker must be running on the host
2. **Confirm backend is reachable** — the backend port (default 5179) must be accessible
3. **Check key scopes** — call `GET /api/auth/status` to know what the key can do
**If Docker is not installed or running:**
→ See `references/docker-install.md` for installation instructions by OS.
**If WAGMIOS backend is not reachable:**
→ Ask the user to confirm the backend is running at the provided URL.
---
## Authentication
Every request requires the `X-API-Key` header. The user provides the key and base URL at runtime — do not store it.
```
Base URL: http://localhost:5179 (user provides, may differ for remote hosts)
Header: X-API-Key: <key>
```
Check key scopes first via `GET /api/auth/status` — this tells you what the key can do.
**Credential handling:**
- Keys are provided by the user at runtime, not stored by the agent
- The API key is scoped — it only allows what the user explicitly granted
- Do not log or expose the full key value
---
## Scope Map
| Scope | Permitted Actions |
|-------|------------------|
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> Core Principle → Startup Check (First Interaction) → Authentication → Scope Map → Standard Workflow → Decision Tree
terms -> Scope = Permission. API Only. No Workarounds. · primary interface · If a scope is missing, the agent cannot do the task — ask the user to enable it. · Confirm Docker is available · Confirm backend is reachable · Check key scopes · If Docker is not installed or running · If WAGMIOS backend is not reachable
files/cmd -> docker · GET /api/auth/status · references/docker-install.md · X-API-Key · containers:read · containers:write · containers:delete · images:read
body sha256 -> 9a20332adef0
Decide Fit First
Design Intent
How To Use It
Boundaries And Review