⚡ 100% Open Source · AGPL-3.0-only

Deploy Keepfor.me on your own
Cloudflare infrastructure

Keepfor.me is fully open-source software. Run the entire serverless Python stack on your personal Cloudflare account for total data ownership, zero recurring subscription fees, and no vendor lock-in.

View GitHub Repository Live OSS Demo Instance
Serverless Architecture

Built purely on Cloudflare edge primitives

No long-running Docker containers or idle virtual machines to maintain. Keepfor.me runs on modern edge infrastructure that scales to zero and costs nothing within Cloudflare free limits.

Runtime
Python Workers
FastAPI application running on Pyodide edge isolates with sub-millisecond cold starts.
Database
D1 (SQLite + FTS5)
Serverless relational database with native full-text keyword search and composite indexes.
Storage
R2 Object Storage
Durable, S3-compatible snapshot archive for raw HTML and extracted article content.
Vectors
Vectorize
768-dimension vector index enabling fast hybrid semantic search across your library.
Async Queue
Cloudflare Queues
Background job queue for resilient, non-blocking article parsing and metadata extraction.
Step-by-Step Runbook

Five steps to production

Deploy in minutes using standard CLI tools. Detailed documentation is always available in the GitHub deployment guide.

1

Prerequisites and tooling

You will need an active Cloudflare account (the generous Free tier works great) and a command line with Node.js 20+ and Astral uv installed:

terminal - verify prerequisites
# Verify Node.js and Astral uv are installed
node -v       # v20.x or later
npm -v
uv --version  # Python package and venv runner
2

Clone repository and sync dependencies

Clone the open-source repository from GitHub and install the Python runtime dependencies:

terminal - clone and sync
git clone https://github.com/melcutz/keepfor.me.git
cd keepfor.me
uv sync
3

Provision Cloudflare edge resources

Use Wrangler to create your D1 database, R2 storage bucket, Vectorize index (768 dimensions for BGE embeddings), and extraction queue:

terminal - provision bindings
# 1. Create SQLite D1 database
npx wrangler d1 create keepfor-me-db
# Note: copy database_id into wrangler.local.jsonc

# 2. Create R2 bucket for snapshots
npx wrangler r2 bucket create keepfor-me-bucket

# 3. Create Vectorize index for embeddings
npx wrangler vectorize create keepfor-me-index --dimensions=768 --metric=cosine

# 4. Create Queue for async extraction
npx wrangler queues create keepfor-me-queue
4

Apply database schema migrations

Run the SQL migrations to initialize user tables, full-text search virtual tables (FTS5), rate limiting counters, and composite indexes:

terminal - apply migrations
npx wrangler d1 migrations apply keepfor-me-db --remote
5

Deploy Worker and claim admin ownership

Deploy your Python FastAPI worker to Cloudflare. Once deployed, open your domain and register immediately: the first account created automatically claims instance ownership and closes public signups:

terminal - deploy worker
# 1. Dry run to verify bundle size is within budget
uvx --from workers-py pywrangler deploy --dry-run

# 2. Deploy live to your Cloudflare account
uvx --from workers-py pywrangler deploy
Clear Licensing Terms

Open source licensing & commercial rights

Transparent rights, strict network copyleft, and clear commercial licensing paths.

Personal & Internal Use

AGPL-3.0-only License

Keepfor.me is licensed under the GNU Affero General Public License v3.0. You are completely free to inspect, audit, self-host, and modify Keepfor.me for personal or internal organizational use at zero cost.

Under network copyleft terms, if you modify Keepfor.me and offer it as a network service to external users, you must release your modified source code under the AGPL-3.0.

Proprietary & Embedded Use

Commercial Licensing

Need to embed Keepfor.me inside a proprietary commercial product, ship closed-source appliances, or bypass AGPL copyleft requirements?

Commercial dual-licensing agreements with dedicated support and indemnification are available upon request.

Prefer zero server maintenance?

Don't want to configure Cloudflare bindings, apply D1 database migrations, or monitor isolate memory? Sign up for the hosted edition. Get instant access, automated snapshot backups, managed AI summaries, and high-availability MCP endpoints.

Start free trial Compare Plans & Pricing
Copied!