Setup
A hands-on tutorial: run LensWord end to end with Docker Compose and see it work in minutes. Start here if you're new.
Start the tutorial
Spaced repetition, forced recall, and memory-palace visualization β across a web app, desktop shell, browser extension, and MCP server.
LensWord is an open-source vocabulary trainer that forces spaced-repetition recall instead of passive review, and lets you anchor words spatially in a memory palace (the method of loci). It's a FastAPI + Postgres backend behind a Vite/React web app, with an optional desktop shell, browser extension, and MCP server for AI clients β see Choose your surface for what each one is good for and how mature it is today.
| Surface | Purpose | Requires | Status |
|---|---|---|---|
| Web Application | Browser-based vocabulary learning and review interface. | apps/backend | public |
| Desktop Application | Tauri 2 desktop shell wrapping the web frontend, remote-only (no bundled backend or database). | apps/backend (remote, reachable server required) | unreleased No git tag or GitHub Release has ever been created. README states explicitly: 'No release has been published yet.' |
| Browser Extension | Chrome MV3 extension to capture selected words from any webpage into a LensWord group. | apps/backend | public-dev-mode-only Functional but not published to the Chrome Web Store; zero CI coverage. v1 scope hardcoded to Spanish, no translations. |
| MCP Server | Model Context Protocol server exposing LensWord actions to MCP clients (Claude, Codex, Cursor, etc.) over stdio by default, or Streamable HTTP when explicitly enabled. | apps/backend | public-source-install-only Not published to PyPI. No CI coverage despite having its own pytest suite. Remote HTTP transport is double-gated off by default (REMOTE_MCP_ENABLED on the backend + LENSWORD_MCP_TRANSPORT/LENSWORD_MCP_REMOTE_ENABLED on the MCP process) and has no live interop test against a real third-party MCP host. |
| Local CLI | Command-line entry point ('lensword') distinct from the MCP server, with add/explain/diagnose/review/import-context subcommands. | apps/backend (all subcommands except import-context) | public-source-install-only import-context is read-only/offline by design (never writes, never contacts the backend, redacts secrets, 50,000-char default cap). Other subcommands need the same backend env vars as the MCP server. |
This site follows the DiΓ‘taxis framework, so each page has one job:
No tagged release exists yet for any surface β this documentation describes the current development branch, evaluated with evidence rather than assumed. See Trust & verification for the full picture.