--- 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: 1. Resolve user + wiki from hostname + path 2. Check ACL (database lookup) 3. Access git repo on disk 4. Route to handler: - **MCP**: FastMCP Streamable HTTP handler - **API**: REST endpoints (otterwiki-api) - **Web**: Otterwiki Flask app - **Git**: Smart HTTP protocol (dulwich) 5. 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)
