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:

  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
  • 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)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9