Properties
status: current platform: robot.wtf
Extracted from the original wikibot.io design. AWS-specific content archived at Archive/AWS_Design/Platform_Overview.
See also: Design/Data_Model, Design/Auth, Design/VPS_Architecture, Design/Operations.
Platform Overview: robot.wtf
Overview
A multi-tenant platform that lets users create and manage private research wikis — each backed by its own Git repo and exposed via its own MCP endpoint. Based on the Otterwiki + semantic search + MCP stack built for the Third Gulf War project.
The platform is a freemium service:
- Free tier: 1 wiki, 1 author, full read/write/MCP access, semantic search included
- Premium tier: Multiple wikis (up to 12), multiple authors (up to 25 per wiki), external Git sync
Context
Why this exists
Setting up a research wiki with MCP integration currently requires: forking Otterwiki, writing API and semantic search plugins, deploying an MCP server, configuring reverse proxy + TLS + auth, and wiring it all together. This took weeks of work. The resulting system is useful enough that it should be productized — but the per-instance infrastructure cost and setup complexity make it impractical to self-host for casual use. The platform absorbs that setup complexity.
Key users
- Researcher — creates wikis, writes/reads notes via MCP from Claude.ai or Claude Code, browses via web UI
- Admin — manages user accounts, monitors usage, handles billing tier changes
Multi-Tenancy Model
Each user owns zero or more wikis. Each wiki has its own:
- Git bare repo (filesystem)
- FAISS vector index (filesystem)
- ACL entries (database)
Isolation is at the filesystem path level: {data_dir}/{user}/{wiki}/.
Routing
{user}.robot.wtf/{wiki}/mcp → MCP handler (Streamable HTTP)
{user}.robot.wtf/{wiki}/api/* → REST API handler
{user}.robot.wtf/{wiki}/ → Otterwiki Flask app (web UI)
{user}.robot.wtf/{wiki}.git/* → Git smart HTTP (dulwich)
robot.wtf/auth/* → OAuth / ATProto auth flows
robot.wtf/admin/* → Management API
robot.wtf/ → Landing page
Auth token validation on all routes except /auth/* and public wikis.
Application Logic
Request handling follows this sequence:
- Resolve user + wiki from hostname + path
- Check ACL (database lookup)
- Access git repo on disk
- Route to handler:
- MCP: FastMCP Streamable HTTP handler
- API: REST endpoints (otterwiki-api)
- Web: Otterwiki Flask app
- Git: Smart HTTP protocol (dulwich)
- On write: persist repo, queue reindex
Semantic Search
- Model: all-MiniLM-L6-v2 (runs locally, no external API calls)
- Index: FAISS, one index per wiki, stored alongside the git repo
- Reindex: triggered on write (async)
