Part of the Simple Agility stack. Roller is the stack's customer communication component: the authoritative sovereign platform where the business engages directly with customers, subscribers, and collectors (SA-7).
Roller is an independent fork of Apache Roller 6.2 modernized for modern containerized operations: Spring Boot, Java 25, PostgreSQL, Markdown-only authoring, and native agent automation via API tokens and Model Context Protocol (/api/mcp).
flowchart TD
subgraph Sourcing_and_Intake["Stockroom Operations"]
SR[Stockroom Intake & WMS]
FLAG["Operator Flag:<br/>'Feature on Blog'"]
SR --> FLAG
end
subgraph Agent_Publisher["Agent Publishing Pipeline"]
BA["Roller Publishing Agent<br/>(Blogger-Agent Refactor)"]
ASSETS[("blog-assets CDN<br/>(GitHub Media Storage)")]
FLAG -->|Item Payload: Photos, Notes, Link| BA
BA -->|Embed Featured Media| ASSETS
end
subgraph Roller_Platform["Roller Production Fleet (docker1)"]
MCP["Roller MCP Server<br/>(/api/mcp)"]
API["Automation API<br/>(/api/v1/entries)"]
WLOG["Reselling Weblog<br/>(Estate Finds & Spotlights)"]
LM["listmonk Newsletter<br/>(/newsletter/subscribe)"]
UMAMI["Umami Analytics<br/>(Privacy-first telemetry)"]
BA -->|Bearer Token: Role POST| MCP
BA -->|Direct Draft Submission| API
MCP --> WLOG
API --> WLOG
WLOG --> LM
WLOG --> UMAMI
end
subgraph Customer_Touchpoints["Customer Outbound"]
READERS["Public Readers & Collectors<br/>(Organic Search & Social)"]
SUBSCRIBERS["Email Subscribers<br/>(Weekly Curated Roundups)"]
EBAY["Active eBay Listings<br/>(Direct Conversion)"]
WLOG --> READERS
LM --> SUBSCRIBERS
WLOG -.->|Direct Purchase Link| EBAY
end
Three interconnected services provide sovereign customer outreach without third-party platform lock-in:
) — Manages opt-in subscriber lists, automated email campaigns, and digest broadcasts, fed directly from subscription forms on the blog (/newsletter/subscribe).
) — Privacy-first, cookie-free reader telemetry served from the blog's own domain to measure article retention and campaign conversion without ad-blocker degradation.Production is strictly containerized: since the 2026-10-18 cutover, host docker1 runs docker-compose.prod.yml (Caddy on port 8084) behind Cloudflare ingress (HostDocker1, HomeLabFleetAndIngress). The docker2 stack is stopped.
Per architectural decision SA-8, inventory items transition from warehouse intake to public customer stories through an operator-assisted pipeline:
blogger-agent refactored as the native Roller publisher, SA-INIT-01) extracts the item's catalog facts, physical dimensions, condition notes, upright photographs, and generated eBay listing permalink./api/mcp or REST API.Roller v0.2.0 introduces first-class agent automation primitives:
POST, EDIT_DRAFT, or ADMIN) and optionally restricted to a specific weblog handle./api/mcp): AI coding and publishing agents (such as Antigravity, Claude Code, or autonomous schedulers) connect directly to Roller via MCP. See RollerMcp for minting commands and protocol capabilities.blog-assets CDN repository, ensuring fast, cached image delivery without burdening the application container.entries get by anchor, find/replace edits guarded by contentHash/expectedContentHash (Wikantik's update_page scheme), fields for small responses, revisions with notes, diffs and restore, and per-entry SEO audits. See RollerMcp.Roller conforms to Simple Agility fleet standards (SimpleAgilityDecisionLog, SimpleAgilityTelemetryContract):
service_instance="roller-prod" on host docker1 (SA-5).JsonTemplateLayout with service.name=roller and trace.id propagation (SA-6, tracked on SimpleAgilityTelemetryAdoption as Phase 1 adoption items R1–R5 and sequenced on SimpleAgilityRoadmap)./actuator/prometheus for scraping by jakemon's host Alloy agent.| You are about to... | Read | Why |
|---|---|---|
| Track marketing conversion from blog posts to Stockroom sales | SimpleAgilityAttributionRFC | RFC for EPN affiliate tags, marketplace coupons, and Umami click tracking (SA-12) |
| Connect an agent to Roller via MCP, mint tokens, or review tool capabilities | RollerMcp | Exact syntax for claude mcp add, /api/mcp endpoint specs, token scopes, and error states |
| Create the first admin, inspect user accounts, or recover admin credentials | RollerAdminAccountRunbook | Step-by-step administrative credentials management and reset procedures |
| Deploy, configure, upgrade, or back up a Roller production node | RollerOnDocker | Comprehensive operator manual: Compose files, environment variables, TLS, and backups |
| Coordinate cross-repo initiatives between Stockroom and Roller | SimpleAgilityAgentCoordination | Active initiatives ledger (SA-INIT-01, SA-INIT-02) and agent contract rules |
| Check hardware layout, port bindings, and container topology | HostDocker1 | Host resources, Roller on port 8084, and cloudflared tunnel ingress |