@realchendahuang: FlareMo - A note-taking app natively built on the Cloudflare tech stack. Register a free Cloudflare account, and after deployment, you get 10GB of file storage and 5GB of database storage. Permanently free, no cost for infrastructure or traffic, multi-region data backup, inherently highly available...
Summary
FlareMo is a note-taking app natively built on the Cloudflare tech stack, permanently free, supports the Memos ecosystem, can be deployed to Cloudflare Workers with one click, offering 10GB of file storage and 5GB of database storage.
View Cached Full Text
Cached at: 06/29/26, 02:22 AM
FlareMo - A note-taking app natively built on the Cloudflare tech stack. Register a free Cloudflare account, deploy it, and you get 10 GB of file storage and 5 GB of data storage. Permanently free — no cost for infrastructure, no cost for traffic, data is backed up in multiple regions, with built-in high availability so you never have to worry about losing it. Available 24/7 from anywhere in the cloud. Fully compatible with the Memos ecosystem.
Here’s the current development progress: I spent one day building out the core functionality, and it’s now fully usable. In the future, I’ll add more deployment guides, engineering test cases, AI Agent-related features, and multi-platform support. I’ll keep updating this — build in public.
Github: https://github.com/realchendahuang/FlareMo
realchendahuang/FlareMo
Source: https://github.com/realchendahuang/FlareMo
FlareMo
A personal note‑taking system that runs 24/7 in the cloud with just a free account. Cloudflare‑native deployment — built‑in database and object storage, login using your own Cloudflare account, and an external Memos‑compatible API.
GitHub stars (https://github.com/realchendahuang/FlareMo) license Powered by Cloudflare (https://www.cloudflare.com/) Memos compatible (https://github.com/usememos/memos) English Deploy to Cloudflare (https://deploy.workers.cloudflare.com/?url=https://github.com/realchendahuang/FlareMo)
Why this project
Flomo proved that a lightweight note‑taking experience — “quick capture + quiet timeline” — is valuable. But self‑hosting such a system usually means a VPS, a Postgres, a bunch of Docker containers, a weekly backup script to maintain, and the risk of losing everything if the hard drive fails.
FlareMo wants to answer a different question: Can you have a 24/7 online, data‑safe, custom‑domain, tool‑callable personal note system using only a free Cloudflare account — no server to buy, no database to install, no backup script to write?
The answer is yes. A free Cloudflare account gives you:
- Cloudflare D1: 5 GB database — for notes, tags, relations, shares, settings.
- Cloudflare R2: 10 GB object storage — for attachments, images, export archives.
- Cloudflare Workers: free request quota, global edge nodes — code and frontend run at the nearest edge.
- Cloudflare Access: login with your own Cloudflare account — no need for a separate username/password or Bearer token inside the app.
- Workers Static Assets — frontend and API served by the same Worker, one deployment handles everything.
The whole system runs on a single Worker. There’s no “server” to look after — just a piece of code and a free account.
How far does that free tier actually go?
Many people don’t have a clear sense of 5 GB database / 10 GB object storage and assume “free” means “not enough”. For personal notes — very low write volume, mostly plain text — the free tier is more than ample.
5 GB D1 database:
- A typical note (with tags, timestamps, index overhead) is about 2 KB. 5 GB can store roughly 2.5 million notes.
- Even if you write 100 notes per day, that’s 68 years worth.
- In reality, most people will never write 5 GB of plain text notes in their lifetime.
10 GB R2 object storage:
- A compressed phone photo is about 1–2 MB. 10 GB can hold roughly 5,000–10,000 images.
- Or about 80 hours of medium‑bitrate voice memos.
- R2 egress traffic is free — sharing images with others won’t generate traffic bills.
In other words, the free tier isn’t a ceiling you’ll hit soon; it’s a capacity you’ll most likely never exhaust.
Why Cloudflare is more reliable than a NAS
Self‑hosting has another often‑underestimated cost: physical data security.
- NAS / self‑built server: Your data lives on a hard drive in your home. Drives fail, power may trip, water might leak, theft can happen, or you might bump it while moving. Even RAID only delays a single drive failure — it can’t protect against the whole machine or room going down. Off‑site backup requires another setup.
- Cloudflare: D1 and R2 data is persisted on enterprise‑grade infrastructure with built‑in redundancy. You don’t buy a second hard drive, don’t write backup scripts, don’t monitor disk SMART alerts. Cloudflare won’t lose your data because your house lost power.
This doesn’t mean you shouldn’t export — FlareMo supports Memos‑format export archives, and keeping a local copy of important data is always good practice. But the daily anxiety of “will my notes be gone when I wake up?” is handled by Cloudflare.
On top of that, Cloudflare provides several things that are hard to combine in a self‑hosted setup:
- Global edge network: You and your friends in different countries access the nearest node.
- Free HTTPS and custom domain: Just bind a domain; certificates auto‑renew.
- No tunneling: No frp, no Tailscale, no public IP needed. Share a link and others can open it.
- Zero ops: No system patches, no database upgrades, no watchdog processes.
What works now
- Quick note capture with tags and attachments.
- Timeline, archive, trash.
- Search, tag filtering, activity heatmap.
- R2 attachment storage.
- Public share links.
- Memos data import/export.
- Memos‑compatible
/api/v1memo / attachment / share subset. - OpenAPI output.
- MCP endpoint.
- Chinese and English UI.
The frontend only shows entry points for features that are implemented. AI review, semantic search, random walk, WeChat input — those haven’t been built yet, so they don’t clutter the interface.
Deployment: one‑click or let an Agent do it
FlareMo’s deployment is deliberately lightweight. Pick one of two ways.
Method 1: One‑click deploy button
Click the “Deploy to Cloudflare” button above. Cloudflare reads wrangler.jsonc, automatically creates a Worker and generates D1 / R2 bindings. After deployment, run a remote migration:
pnpm migrate:remote
If your Cloudflare Dashboard isn’t yet connected to GitHub or GitLab, Cloudflare will ask you to connect a Git provider first. That OAuth authorization happens inside the Cloudflare page — FlareMo never asks for an in‑app token.
Method 2: Let an AI Agent do it
The repo includes docs/agent-deploy.md — a deployment runbook written for Codex / Claude Code / Cursor / similar agents. Hand the repo to an agent that can run commands, and it follows the runbook to create D1/R2 resources, fill in database_id, run migrations, and deploy. You don’t need to remember commands — the Agent takes it step by step.
Manual deployment (if you want to do it step by step): first create the resources:
pnpm exec wrangler d1 create flaremo
pnpm exec wrangler r2 bucket create flaremo-attachments
Write the D1 output database_id into wrangler.jsonc, then run:
pnpm verify
pnpm deploy:dry-run
pnpm migrate:remote
pnpm deploy
Full deployment instructions: docs/deploy.md. English deployment instructions: docs/en/deploy.md. Deploy button test results: docs/deploy-button-test.md.
Login: Use Cloudflare Access, no in‑app token
FlareMo does not accept in‑app Bearer token login. The production access boundary is Cloudflare Access:
- Humans log in via Access with allow policies (supports Google / GitHub / SSO / one‑time passwords, etc.).
- Scripts, Memos‑compatible clients, MCP use Access Service Tokens.
- Public share paths are configured separately as Access bypass.
This means you have no second set of credentials to remember, and no application‑level token stored in the database that could leak. Who can access is determined by the unified Cloudflare Access boundary.
Example script access:
curl "$FLAREMO_URL/api/v1/memos" \
-H "CF-Access-Client-Id: $FLAREMO_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $FLAREMO_ACCESS_CLIENT_SECRET"
Example MCP access:
curl "$FLAREMO_URL/api/v1/mcp" \
-H "content-type: application/json" \
-H "CF-Access-Client-Id: $FLAREMO_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $FLAREMO_ACCESS_CLIENT_SECRET" \
--data '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Recommended bypass‑public paths:
/share/*/api/public/shares/*/assets/*
Shared content is still validated by FlareMo’s share token, expiration time, and memo status.
Tech Stack
- Runtime: Cloudflare Workers
- Web: React, Vite, Tailwind CSS, shadcn/radix primitives
- API: Hono‑style Worker routes, Zod contracts, OpenAPI
- Database: Cloudflare D1, Drizzle
- Object storage: Cloudflare R2
- Auth boundary: Cloudflare Access
- Package manager: pnpm
D1 is the source of truth for business data: notes, users, tags, shares, relations, etc. R2 only holds attachments, export archives, and object files. KV, Vectorize, Workers AI, Queues/Cron are only added when a specific feature actually requires them — they won’t replace D1.
Architecture
flowchart LR
Browser["FlareMo Web UI"] --> Worker["Cloudflare Worker"]
Clients["Memos-compatible clients / scripts / MCP"] --> Worker
Worker --> D1["D1: memos, users, relations, shares, settings"]
Worker --> R2["R2: attachments and exports"]
Worker --> Assets["Workers Static Assets"]
A single Worker serves both API and frontend static assets. D1 holds authoritative data, R2 holds attachments. The Memos compatibility layer is an adapter — it does not port the original Memos Go server to Workers.
Memos Compatibility Surface
FlareMo retains Memos‑style core entities, aiming to reuse Memos clients, scripts, imports/exports, and ecosystem tools — not to port the original Memos Go server.
Retained entities: users/{id}, memos/{id}, attachments/{id}, memo payload / property, relations, shares, settings.
Current public API subset:
POST /api/v1/memosGET /api/v1/memosGET /api/v1/{name=memos/*}PATCH /api/v1/{memo.name=memos/*}DELETE /api/v1/{name=memos/*}GET /api/v1/{name=memos/*}/attachmentsPATCH /api/v1/{name=memos/*}/attachmentsGET /api/v1/{name=memos/*}/relationsPATCH /api/v1/{name=memos/*}/relationsPOST /api/v1/{parent=memos/*}/sharesGET /api/v1/shares/{share_id}POST /api/v1/attachmentsGET /api/v1/attachmentsGET /api/v1/{name=attachments/*}GET /api/v1/{name=attachments/*}/blobDELETE /api/v1/{name=attachments/*}GET /api/v1/exportPOST /api/v1/importGET /openapi.jsonPOST /api/v1/mcp
Internal services do not replicate the original Memos multi‑database abstraction, local file assumptions, background runners, SSE, social features, or instance admin panel. Memos compatibility scope: docs/memos-compatibility.md. Third‑party client/tool compatibility matrix: docs/memos-ecosystem.md.
Local Development
pnpm install
pnpm migrate:local
pnpm dev
Default local address: http://localhost:8787. pnpm dev builds the frontend first, then starts the Worker with Wrangler using local D1/R2 emulation.
Project Status
FlareMo currently has:
- A deployable Cloudflare Worker + Workers Static Assets integrated application.
- D1 + Drizzle schema and migrations.
- R2 attachments.
- Memos‑compatible API subset, import/export, OpenAPI, and MCP.
- Flomo‑style quick capture and timeline UI.
- Cloudflare Access production access boundary.
- Deploy to Cloudflare button.
- Agent deployment runbook, release rules, compatibility matrix, and open‑source collaboration documents.
Future direction: ROADMAP.md.
Engineering
The project does not use GitHub Actions as CI. Before a release, the maintainer runs locally:
pnpm verify
pnpm deploy:dry-run
Common maintenance commands:
pnpm format:check
pnpm screenshots
pnpm backup:drill
pnpm release vX.Y.Z
pnpm verify runs type checking, Vitest, production build, and Playwright E2E. Memos compatibility has a dedicated Worker contract test covering DTO shape, attachment import/export, and OpenAPI paths. Screenshots are generated by pnpm screenshots from a local Worker instance — README images are not design mockups.
Release rules: docs/release.md. Maintenance guide: docs/maintenance.md. Contribution guidelines: CONTRIBUTING.md. Support: SUPPORT.md. Security policy: SECURITY.md. Code of conduct: CODE_OF_CONDUCT.md.
Reference Projects
- usememos/memos (https://github.com/usememos/memos): data model, resource naming, and compatible API reference.
- blinkospace/blinko (https://github.com/blinkospace/blinko): search, attachment, and editing experience reference.
- XuYouo/MeowNocode (https://github.com/XuYouo/MeowNocode): lightweight Cloudflare D1 application reference.
Star
If you like this project, give it a star to follow updates.
Star History Chart (https://star-history.com/#realchendahuang/FlareMo&Date)
License
MIT
Chen Dahuang (@realchendahuang): Lately I’ve been thinking about a plan.
I want to move all my personal knowledge management, information collection, and knowledge output to Cloudflare.
A free account already gives you 10 GB of object storage and 5 GB of database.
That’s essentially a self‑hosted, cloud‑based, permanently free knowledge management system.
Similar Articles
@QingQ77: FlareMo — A Cloudflare-native personal knowledge management system https://github.com/realchendahuang/FlareMo… A personal note-taking system running on Cloudflare Workers, leveraging Cloud…
FlareMo is a personal note-taking system based on Cloudflare Workers. It uses the free tier to achieve zero server maintenance, supporting Flomo-style timeline notes, tags, attachments, search, and more.
@realchendahuang: Recently, I've been thinking about a plan. I intend to move all my personal knowledge management, information collection, and knowledge output to Cloudflare. The free tier already includes 10GB of object storage and 5GB of database. It's essentially a self-hosted, cloud-based, permanently free knowledge management system.
The user plans to migrate their personal knowledge management system to Cloudflare's free tier, leveraging its 10GB object storage and 5GB database to build a self-hosted, cloud-based, permanently free system.
@realchendahuang: I feel that everyone is still using less than 1% of Cloudflare's capabilities. It now has way too many features. Object storage: use R2. Backend API: use Workers. AI gateway: use AI Gateway. Heavy computation: use Containers. Cache: use KV. Database...
This tweet introduces various development features provided by Cloudflare, including object storage R2, backend API Workers, AI gateway AI Gateway, containers, cache KV, database D1, and PostgreSQL connection HyperDrive, emphasizing their low cost, rich features, and generous free tier.
@geekbb: This is great — an open-source memory layer that lets Claude, ChatGPT, Cursor, and Codex share a single brain. It's deployed on Cloudflare Workers, storing memory in your own Cloudflare account, using MCP externally, with data landing on the user…
Second Brain is an open-source memory layer that lets Claude, ChatGPT, Cursor, and Codex share persistent, semantic searchable memory, deployed on Cloudflare Workers for user-controlled storage.
@PierceZhang34: Guys, this open-source project is amazing — Memos, a fully open-source, self-hosted lightweight note service, has garnered 60k+ Stars on GitHub. It's the perfect open-source alternative to Flomo, designed for quickly capturing inspiration, not just traditional Todo or folder-style notes…
Memos is an open-source, self-hosted lightweight note service, similar to Flomo, supporting Markdown, timeline-style interface, data fully under user control, with 60k+ Stars on GitHub, deployable via Docker with one command.