{
  "version": "2",
  "generatedAt": "2026-11-03T21:36:30.074Z",
  "listing": {
    "slug": "lucasastorian--llmwiki",
    "name": "LLM Wiki",
    "tagline": "Self-maintaining personal Wikipedia: an agent ingests your sources over MCP and compiles the wiki.",
    "shortTagline": "Self-maintaining personal wiki",
    "description": "LLM Wiki stores documents, clippings, and notes, and exposes an MCP server through which Claude (or any MCP client) ingests sources, writes and lints wiki pages, and answers questions against the compiled wiki. A Next.js app and a Chrome extension are the human side. Apache-2.0, with a free hosted edition at llmwiki.app and a zero-config local mode.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "notes-knowledge",
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "hybrid",
    "provenance": "unknown",
    "codeStack": {
      "languages": [
        "Python",
        "TypeScript"
      ],
      "frameworks": [
        "Next.js",
        "FastMCP"
      ],
      "packageManager": "pip, npm",
      "database": [
        "PostgreSQL (Supabase, remote mode)",
        "local files"
      ],
      "hostingTarget": [
        "local",
        "docker",
        "railway"
      ]
    },
    "modelStack": {
      "providers": [
        "any MCP client (Claude.ai, Claude Code, Codex)",
        "Voyage (embeddings, remote mode)",
        "Mistral (OCR, optional)",
        "Cloudflare AI Gateway (remote mode)"
      ],
      "models": [],
      "requiredKeys": [
        "VOYAGE_API_KEY",
        "TURBOPUFFER_API_KEY",
        "MISTRAL_API_KEY",
        "CLOUDFLARE_AUTH_TOKEN"
      ],
      "promptLocations": [
        "mcp/tools/guide.py"
      ],
      "tools": [
        "ingest",
        "read",
        "write",
        "search",
        "list",
        "lint",
        "quiz_lint",
        "references",
        "comments",
        "reply",
        "delete",
        "guide"
      ]
    },
    "repos": [
      {
        "url": "https://github.com/lucasastorian/llmwiki",
        "owner": "lucasastorian",
        "name": "llmwiki",
        "license": "Apache-2.0",
        "stars": 1563,
        "lastCommit": "2026-08-09"
      }
    ],
    "interface": {
      "kind": "mcp",
      "url": "https://github.com/lucasastorian/llmwiki/tree/main/mcp",
      "official": true,
      "hosted": "both"
    },
    "operability": "native",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Ingest documents and clippings into the raw store",
        "reachable": true,
        "evidence": "mcp/tools/ingest.py"
      },
      {
        "job": "Write and update wiki pages with citations",
        "reachable": true,
        "evidence": "mcp/tools/write.py; frontmatter and footnote helpers"
      },
      {
        "job": "Query the compiled wiki",
        "reachable": true,
        "evidence": "mcp/tools/search.py and read.py"
      },
      {
        "job": "Lint for inconsistencies, orphans, and missing links",
        "reachable": true,
        "evidence": "mcp/tools/lint.py and quiz_lint.py"
      },
      {
        "job": "Backlinks and references",
        "reachable": true,
        "evidence": "mcp/tools/references.py get_backlinks_summary"
      },
      {
        "job": "Read and reply to highlights and comments from the extension",
        "reachable": true,
        "evidence": "mcp/tools/comments.py and reply.py"
      },
      {
        "job": "Delete pages",
        "reachable": true,
        "evidence": "mcp/tools/delete.py"
      },
      {
        "job": "Quizzes over the wiki",
        "reachable": true,
        "evidence": "quiz_lint.py; QUIZ_GRADE_DAILY_LIMIT"
      },
      {
        "job": "Graph viewer and visualizations",
        "reachable": false,
        "evidence": "web app feature; pages can embed Mermaid and SVG the agent writes"
      },
      {
        "job": "Clip pages from the browser",
        "reachable": false,
        "evidence": "Chrome extension; the agent ingests through the ingest tool instead"
      }
    ],
    "editions": [
      {
        "name": "Free (local or self-hosted)",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/lucasastorian/llmwiki"
          },
          {
            "kind": "installable",
            "url": "https://github.com/lucasastorian/llmwiki#getting-started",
            "command": "./llmwiki open ~/research"
          },
          {
            "kind": "container",
            "url": "https://github.com/lucasastorian/llmwiki/blob/main/docker-compose.yml"
          }
        ]
      },
      {
        "name": "Hosted",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://llmwiki.app"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or published skill found in the repo."
    },
    "customization": {
      "summary": "Local mode needs no config: ./llmwiki open <folder> indexes any folder of PDFs, Office files, and markdown and serves on loopback. Remote (self-hosted) mode is driven by .env.example: DATABASE_URL and SUPABASE_URL for storage and auth, S3_BUCKET with AWS keys for files, VOYAGE_API_KEY and TURBOPUFFER_API_KEY for embeddings and vector search, MCP_URL and NEXT_PUBLIC_MCP_URL to wire the MCP endpoint, CONVERTER_URL for Office conversion, QUIZ_GRADE_DAILY_LIMIT. The agent's operating instructions live in mcp/tools/guide.py.",
      "envVars": [
        "APP_URL",
        "DATABASE_URL",
        "SUPABASE_URL",
        "NEXT_PUBLIC_SUPABASE_URL",
        "NEXT_PUBLIC_SUPABASE_ANON_KEY",
        "S3_BUCKET",
        "AWS_ACCESS_KEY_ID",
        "AWS_SECRET_ACCESS_KEY",
        "VOYAGE_API_KEY",
        "TURBOPUFFER_API_KEY",
        "MISTRAL_API_KEY",
        "CLOUDFLARE_ACCOUNT_ID",
        "CLOUDFLARE_AI_GATEWAY_ID",
        "CLOUDFLARE_AUTH_TOKEN",
        "MCP_URL",
        "NEXT_PUBLIC_MCP_URL",
        "NEXT_PUBLIC_API_URL",
        "CONVERTER_URL",
        "CONVERTER_SECRET",
        "QUIZ_GRADE_DAILY_LIMIT",
        "LOCAL_EXTENSION_ORIGINS",
        "STAGE"
      ],
      "configFiles": [
        ".env",
        "docker-compose.yml",
        "mcp/railway.toml"
      ],
      "promptFiles": [
        "mcp/tools/guide.py"
      ],
      "effort": "config-only",
      "editCount": 26
    },
    "useWhen": [
      "you read a lot and want a wiki of what you have read that Claude keeps up to date on a nightly routine",
      "your team wants institutional memory compiled from documents rather than written by hand"
    ],
    "accounts": [
      "Supabase, S3, Voyage, and Turbopuffer (remote self-host only)",
      "Mistral (optional OCR)",
      "llmwiki.app account (hosted edition)"
    ],
    "active": true,
    "lastActivity": "2026-08-09",
    "gotchas": [
      "Local mode is loopback-only by design; no LAN or remote binding",
      "Remote self-hosting needs four external services before the first page appears",
      "LibreOffice is required to extract Word and PowerPoint files",
      "Young project (1.5k stars, 26 open issues); the nightly compile depends on a Claude Routine you schedule"
    ],
    "fit": {
      "adaptable": 3,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: Next.js web app plus Python API and MCP server",
      "executionModel": "the agent does the synthesis over MCP; OCR and quiz grading call models server-side",
      "operability": "mcp/ directory in the repo; README 'built and maintained by AI' with MCP as the write path",
      "effort": ".env.example names; README local quick start needs no config",
      "editions": "llmwiki.app: 'Free & open source · Apache 2.0', 'Get started free'; no price list found",
      "active": "pushedAt 2026-08-09",
      "provenance": "no authorship statement; no agent markers"
    },
    "confidence": {
      "formFactor": 0.85,
      "executionModel": 0.7,
      "operability": 0.85,
      "effort": 0.85,
      "reach": 0.85,
      "editions": 0.7,
      "provenance": 0.3
    },
    "openQuestions": [
      "Does llmwiki.app have paid tiers or limits?",
      "Which tool names are registered (file names were read, decorators were not)"
    ],
    "sources": [
      {
        "url": "https://github.com/lucasastorian/llmwiki",
        "foundBy": "sourcing:notes-knowledge:github"
      },
      {
        "url": "https://llmwiki.app",
        "foundBy": "analysis"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Apache-2.0 with a full .env surface and a zero-config local mode; the agent is the primary maintainer over an in-repo MCP, so operability is native.",
      "disputed": []
    },
    "url": "apps/lucasastorian--llmwiki.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/lucasastorian--llmwiki.json"
  }
}
