andrsschultz/mike
Full local stack: filesystem storage, local LLM, local Supabase, vendored assets
andrsschultz/mike is a self-hosting-focused fork that strips every cloud dependency from the default Mike stack. Cloudflare R2 is replaced with a local filesystem path (LOCAL_STORAGE_DIR), Supabase is configured to run locally, Claude/Gemini are swapped for a local LLM provider, and frontend assets that previously loaded from unpkg and Google Fonts CDNs are vendored into the repo. Cloudflare deployment tooling and unused dependency artifacts are also removed.
The result is a fork that runs with no external service accounts required beyond a model API key (or none, if a local model is in play). The tradeoff is that nothing here is designed to scale beyond a single machine - there's no shared storage, no managed auth, no CDN.
What's in it
- On-prem file storage Documents stay on local disk instead of going out to object storage in the cloud.
- Self-hosted LLM backend Talks to a local OpenAI-compatible model server rather than calling out to Claude or Gemini.
- Local database stack Ships with its own Supabase configuration so the database runs alongside the app, not as a managed service.
- Vendored frontend assets PDF rendering fonts and other browser assets are bundled in, so the UI loads with no calls to public CDNs.
- Cloud deployment tooling removed The Cloudflare-specific build and deploy path is gone, leaving a stack that's meant to run on your own boxes.
- Trimmed external services Outbound integrations that don't fit an air-gapped deployment, like transactional email, have been pulled out.
Direction
infrastructuresecurity
Activity
Threads of work (detailed view)
andrsschultz cuts the cord so Mike reads PDFs offline
PDF viewing no longer phones home to a public network, which matters if your deployment can't.
PDF.js fonts vendored locally; CDN dependency removed
andrsschultz swaps `STANDARD_FONT_DATA_URL` from the unpkg CDN to a local `/pdfjs/standard_fonts/` path, bundling all 10 Foxit `.pfb` files and 4 Liberation Sans `.ttf` files directly into the repo. The rest of the commit strips Google Fonts and rewrites upstream brand links - fork personalization you can skip.
andrsschultz pulls Mike off the cloud
This fork drops the Cloudflare deployment path entirely and bets on self-hosting instead.
andrsschultz moves Mike's AI engine in-house
This fork cuts the cords to outside AI services and runs the model on hardware you control.
Claude and Gemini backends replaced by a local OpenAI-compatible provider
andrsschultz deleted both LLM provider files and replaced them with a single `local.ts` that routes all calls to a `LOCAL_LLM_BASE_URL` endpoint. The streaming implementation handles reasoning models and multi-round tool use, and is the one part of this commit worth cherry-picking.
andrsschultz rips out the cloud and keeps the files on disk
This fork stops sending documents to cloud storage and saves them to a folder on its own server instead.
R2 replaced with local filesystem storage
andrsschultz swapped Cloudflare R2 out for a local `fs`-backed storage layer, removing the entire AWS SDK dependency tree. The replacement isn't pluggable - R2 is gone, not feature-flagged.
Local Supabase config added for one-command dev setup
andrsschultz added a `supabase/` directory with `config.toml`, a one-shot schema migration, and a runbook, replacing the previous "paste this SQL into the Supabase editor" onboarding. A few rough edges to watch for before adopting.