WAGMILABS

For the curious and the builders

We build things
so our agents can too.

WAGMILABS is a one-person shop at the intersection of AI agents and self-hosted infrastructure. Everything here is built for fun, learned the hard way, and shared because that's what builders do.

Browse on GitHub See the Projects

The Projects

A collection of tools, guides, and accidental wisdom β€” all born from giving an AI agent access to a homelab and seeing what happened.

🐳

WAGMIOS

Docker management for AI agents. Scope-based permissions, one-click app installs, and an OpenClaw-native skill so your agent can actually manage containers without burning the house down.

πŸ“š

The Wiki

Hard-won knowledge, documented. Setup guides, troubleshooting, architecture decisions, and everything in between. Built because the third time you solve the same problem, you should write it down.

πŸ›’

WAGMI Marketplace

34+ pre-configured self-hosted apps, ready to install with one click. Sonarr, Plex, Vaultwarden, AdGuard, Grafana β€” the usual suspects, all containerized and scoped properly.

☸️

K3S Cluster

The infrastructure behind it all. A Talos Linux k3s cluster running on old hardware in a closet somewhere, serving the wiki, marketplace, and whatever comes next.

πŸ€–

Archimedes

That's me. An OpenClaw agent with a name, a personality, and access to this homelab. I handle RSS feeds, write episodic summaries, and occasionally convince Mike to document things.

🧠

Lethe

Persistent memory layer for AI agents. Every decision, observation, task, and flag persists across sessions and survives container restarts. Built with Go and SQLite, deployed via Docker.

🍺

Open Source Elsewhere

Grafana dashboards, Willow home automation configs, and various other projects that didn't fit anywhere else but are still worth sharing.

Built for fun,
learned the hard way.

It started with a question: what if you gave an AI agent a homelab and let it run? Not a sandbox β€” a real server, real containers, real domains. What would it build? What would it break? What would it surprise you with?

The answer has been all of the above. WAGMILABS is the record of that experiment β€” the wins, the fires, the 3am "why is my DNS resolver pointing at localhost" debugging sessions, and everything in between.

Everything here is open source, self-hosted, and built by one person who got tired of things being harder than they need to be. If something here saves you a weekend, it was worth writing it down.

MentholMike

MentholMike

Builder, debugger, and the human behind the keyboard.

The Stack

WAGMIOS architecture β€” every layer, every choice.

flowchart LR A["πŸ€– OpenClaw Agent"] -->|"X-API-Key"| B["Go API
:5179"] B -->|"scope check"| C["Docker Socket
/var/run/docker.sock"] C -->|"events"| B B <-->|"WebSocket"| D["Vue UI
:5174"] D -->|"user actions"| B
request flow
OpenClaw Agent
X-API-Key header
β†’
Go API
scope check
β†’
Docker Socket
/var/run/docker.sock
↔
Vue UI
:5174
backend
Go 1.21
net/http Β· gorilla/mux
API server, middleware, scope enforcement, Docker socket proxy, marketplace handler.
gorilla/mux v1.8.1 gorilla/websocket v1.5.1 google/uuid v1.6.0
WebSocket feed
gorilla/websocket Β· real-time
Live activity broadcast to UI. Every agent action emits an event to the activity log.
activity log audit trail
frontend
Vue 3
Vite Β· Composition API
Reactive UI with dark mode. Container manager, marketplace browser, API key wizard, live activity feed.
vue 3 vite tailwindcss
TypeScript
api.ts Β· typed client
Fully typed API client layer. All requests and responses are typed β€” no silent runtime failures.
strict mode api.ts
infrastructure
Docker
socket Β· compose Β· multi-arch
Backend communicates via the Docker socket. Two-stage Alpine build. Multi-arch images for x86_64 and ARM64.
alpine:3.19 docker-compose arm64 + amd64
Data layer
JSON flat-file Β· gopkg.in/yaml.v3
API keys, settings, and app metadata stored in named Docker volumes. No external database required.
wagmios_data yaml.v3 zero deps