A desktop learning forge. Seven languages, beginner to pro, taught by building things people would actually use — wired into VS Code, with its own MCP server and an AI tutor that refuses to do your homework.
Cross-platform Electron app (macOS + Windows + Linux). Zero runtime dependencies — the WebSocket server, the MCP server, the syntax highlighter and every animation are written from scratch. The only npm packages are Electron itself and the installer builder.
98 lessons · 21 projects · 7 tracks
| Track | Lessons | Starter | Core | Mega |
|---|---|---|---|---|
| Python | 24 | Scryer — watch any webpage for changes | Vault — encrypted secret manager with a TUI | Nightwatch — self-hosted uptime & incident platform |
| Lua & Luau | 16 | Relic Run — precision obby with persistence | Deep Hollow — co-op roguelike dungeon crawler | Sovereign — extraction shooter with a live economy |
| JavaScript & React | 16 | Pulse — real-time dashboard | Atlas — collaborative knowledge base | Meridian — full SaaS with billing & teams |
| C++ | 12 | Hexdump — binary format inspector | Lattice — 2D physics & rendering engine | Obsidian — LSM-tree storage engine |
| Java | 10 | Tessera — double-entry ledger that always balances | Relay — REST API with auth & real tests | Citadel — event-sourced platform with CQRS |
| Rust | 11 | Sift — ripgrep-style parallel search | Conduit — TCP proxy with traffic shaping | Helix — a programming language, lexer to VM |
| Security & DevOps | 9 | Bastion — harden a box, prove it with an audit tool | Watchtower — detection pipeline, logs in / alerts out | Aegis — secure platform from terraform apply to on-call |
Plus CompTIA Security+ (SY0-701) and Network+ (N10-009) objective tracking with flashcards.
Every project ships with an interactive animated preview of the finished product, milestone tracking, non-negotiable requirements, and scaffold files you can generate straight onto disk with the hard parts marked TODO and a comment explaining why that piece matters.
Grab an installer from Releases.
macOS — open the .dmg for your chip (arm64 for Apple Silicon, x64 for Intel) and drag PhantomCode to Applications.
The app isn't code-signed (that needs a paid Apple Developer account), so Gatekeeper blocks the first launch. Either right-click the app → Open → Open, or:
xattr -cr /Applications/PhantomCode.appWindows — run the .exe. SmartScreen warns about an unrecognised publisher for the same reason: More info → Run anyway.
Then, in the app: Settings → Editor bridge → Install the VS Code extension, and restart VS Code.
npm install
npm start┌──────────────────────┐ ws://127.0.0.1:7777 ┌──────────────────┐
│ PhantomCode │ ◄──────────────────────────────► │ VS Code │
│ (Electron) │ file · selection · diagnostics │ + companion ext │
│ │ open · insert · newFile └──────────────────┘
│ ├ curriculum (JSON) │
│ ├ progress store │ stdio JSON-RPC ┌──────────────────┐
│ └ bridge server ────┼──────────────────────────────────►│ Claude Code / │
│ │ mcp/server.js · 8 tools │ Claude Desktop │
└──────────┬───────────┘ └──────────────────┘
│ HTTPS
▼
Anthropic / OpenAI API, or the local `claude` CLI
A loopback-only HTTP + WebSocket server on 127.0.0.1. The companion extension streams your active file, selection and diagnostics in; PhantomCode can open files, insert code and push reviews back out. Nothing is exposed to the network. The WebSocket implementation is hand-rolled (RFC 6455, both ends) so the app ships with no dependencies — npm run test:bridge proves the two halves interoperate, including the 64-bit length path and multi-byte UTF-8.
mcp/server.js speaks JSON-RPC 2.0 over stdio and exposes eight tools:
| Tool | What it does |
|---|---|
phantom_progress |
XP, streak, per-track completion, project milestones |
phantom_next |
what to study next, from what you've actually finished |
phantom_tracks |
every track, phase and project |
phantom_lesson |
the full content of one lesson |
phantom_project |
a project brief with milestones and requirements |
phantom_search |
search all 98 lessons by concept |
phantom_editor_context |
the file currently open in VS Code |
phantom_notes |
the notes you wrote on lessons |
Connect it:
claude mcp add phantomcode -- node "$(pwd)/mcp/server.js"Now you can ask Claude "what should I work on next?" or "review the file I have open" and it answers from your data.
Three routes to a model:
- Claude CLI — shells out to the
claudecommand already installed and signed in on your machine. No API key, no separate billing. - Anthropic API — your own key.
- OpenAI API — your own key.
Keys are stored via Electron's safeStorage (macOS Keychain / Windows DPAPI) and only ever sent to the provider's own API.
On "sign in with Claude/GPT": neither provider publishes a consumer OAuth flow that lets a third-party desktop app act on your chat subscription, so no app can honestly offer that — including this one. Option 1 is the closest legitimate equivalent, and it's genuinely keyless.
npm start # run the app
npm run dev # run with devtools open
npm test # bridge + MCP + full UI smoke test
npm run test:bridge # WebSocket server ↔ extension client integration test
npm run test:mcp # MCP server over real stdio JSON-RPC
npm run test:ui # walk every route, screenshot each, fail on console errors
npm run check # parse every ES module + rebuild & validate curriculum
npm run icon # re-render build/icon.png from the sigil
npm run dist:mac # build .dmg for arm64 + x64
npm run dist:win # build the .exe installerTracks are authored as readable JS in curriculum/ and compiled to JSON that both the app and the MCP server read, so they can never disagree:
# edit curriculum/python.js
npm run build:curriculumThe build validates structure as it goes — duplicate lesson ids, empty code blocks, quizzes with no correct answer, projects missing a tier — so a typo fails the build rather than shipping as a blank page.
src/
main/ Electron main process
main.js window, IPC, app:// protocol
bridge.js hand-written RFC 6455 server + HTTP
ai.js Anthropic / OpenAI / claude-CLI streaming
editors.js VS Code / Cursor / VSCodium detection
store.js atomic JSON persistence + OS keychain
renderer/ the UI — native ES modules, no build step
js/core/ router, state, curriculum loader, syntax highlighter
js/fx/ particle field, synthesised audio, tactile feedback
js/views/ dashboard, tracks, lesson, project, forge, review, certs, settings
js/previews/ 21 animated project previews
shared/
curriculum/ compiled JSON — read by the app AND the MCP server
mcp/ the MCP server
vscode-extension/ the companion extension
curriculum/ authoring source for the tracks
Tag a version and CI does the rest — .github/workflows/release.yml builds on real macOS and Windows runners, then publishes a GitHub Release with every installer attached.
npm version 1.0.1 -m "release %s"
git push && git push --tagsTo cut a release without CI — building all three installers on a Mac, since electron-builder cross-compiles the Windows one through Wine:
npm run dist:mac && npm run dist:win
gh release create v1.0.1 release/*.dmg release/*.exe --generate-notes.github/workflows/ci.yml runs the full suite on macOS, Linux and Windows for every push — including the Electron UI smoke test, under xvfb on Linux.
MIT