Renewlet
Self-hosted subscription ledger with renewal reminders in each user's timezone, budgets and calendar feeds
Renewlet dashboard with monthly spend, upcoming renewals, subscription cards and a spending distribution chart
Renewlet stores each recurring charge with its price, billing cycle, renewal date and payment method. Before a charge renews, it notifies the user through one of ten channels, including Telegram, Discord, email and webhooks. It runs on Cloudflare Workers with D1 and R2, or in Docker.
A dashboard shows monthly spend and upcoming renewals. Statistics compare monthly and yearly spending against a budget with currency conversion, and calendar feeds cover all subscriptions or a single one. A public status page can list subscriptions with prices hidden when needed. AI recognition turns screenshots, notes or tables into editable drafts through an OpenAI, Anthropic, Gemini or OpenAI-compatible endpoint you configure, and you review each draft before import. Data can also be imported, exported or migrated from Wallos. Accounts support authenticator codes, recovery codes and passkeys, and Cloudflare Turnstile can protect password login. A read-only Public API serves CLI tools and Shortcuts. On Cloudflare the app is one Worker with a React front end in static assets. D1 holds users, sessions, subscriptions, settings and notification jobs, R2 stores uploaded logos and icons, and a Queue refreshes the built-in icon index. A cron trigger fires every minute to dispatch reminders. A Docker image with a Go server ships the same app. The Deploy to Cloudflare button also creates a repository in your GitHub account, and later upgrades run its Sync Renewlet Upstream workflow. A public demo at demo.renewlet.cc uses shared credentials.
Built for: Individuals, solo founders and small teams who want to track recurring subscriptions and renewal dates on their own infrastructure.
What you can use it for
- Get a reminder before each SaaS or personal subscription renews
- Compare monthly spend against a budget across currencies
- Import subscriptions from screenshots or from Wallos
- Share a public status page of your subscriptions, with prices hidden when needed
Deploy
One-click · main path
Branch main
CLI
Branch main
Replace each ... with your API token (Workers, D1 and Queues edit), account ID and the printed D1 database ID.
pnpm install --frozen-lockfile pnpm exec wrangler login pnpm exec wrangler d1 create renewlet pnpm exec wrangler r2 bucket create renewlet-assets export CLOUDFLARE_API_TOKEN="..." export CLOUDFLARE_ACCOUNT_ID="..." export WORKER_NAME="renewlet" export D1_DATABASE_ID="..." export R2_BUCKET_NAME="renewlet-assets" export CI_WRANGLER_CONFIG="wrangler.generated.jsonc" export CI_WRANGLER_MAINTENANCE_CONFIG="wrangler.maintenance.generated.jsonc" export CLOUDFLARE_OBSERVABILITY_PROFILE="development" pnpm cloudflare:config:ci pnpm check:cloudflare pnpm build:cloudflare pnpm deploy -- --config wrangler.generated.jsonc --maintenance-config wrangler.maintenance.generated.jsonc
Deploy with the button and keep the generated pnpm deploy command. Then open /setup on the workers.dev URL to create the first administrator.
What it needs to run
- D1 databasesrenewlet
- Queues (consumer)renewlet-media-icon-index-refresh
- Queues (producer)renewlet-media-icon-index-refresh
- R2 bucketsrenewlet-assets
Also uses
- Anthropic API (optional): Claude models for AI recognition of screenshots, notes and tables
- Google Gemini API (optional): Gemini models for AI recognition of screenshots, notes and tables
- OpenAI API (optional): OpenAI or OpenAI-compatible models for AI recognition of screenshots, notes and tables
Good to know
Five of the ten notification channels (WeCom, DingTalk, ServerChan, PushPlus and Notifyx) are Chinese services. Clicking the deploy button again creates a new Worker, D1 database and R2 bucket instead of upgrading. ServerChan can rate-limit requests from Cloudflare egress IPs.
Cost on Cloudflare
Likely fits the free plan
Workers Free covers the D1 database, the R2 bucket, the icon-refresh queue with its dead-letter queue, and the cron trigger. The cron runs every minute and takes one of the five cron triggers an account gets on Free. Free also includes 10,000 Queue operations per day.
The estimate is based on Cloudflare’s documented limits and the app’s configuration. What you pay depends on your usage and plan.
Where this comes from
- Repositoryhttps://github.com/zhiyingzzhou/renewlet
- App websitehttps://renewlet.cc
- Demohttps://demo.renewlet.cc
- Documentationhttps://github.com/zhiyingzzhou/renewlet/blob/main/docs/cloudflare-workers-deploy.md
- App websitehttps://renewlet.cc/en/
An alternative to SubTracker, TrackMySubs.
Listing history
- Oct 2, 2026 · Renewlet listed
Similar apps
All Productivity apps
Renewal reminders for domains, servers and SaaS plans, with lunar calendar cycles and a spending dashboard
- Deploy
- One-click
- License
- MIT
- GitHub stars
- 392 stars
- Last commit

Mind-mapping app with a two-way Markdown editor that saves maps to a private GitHub, Gitea or GitLab repository
- Deploy
- CLI
- License
- MIT
- GitHub stars
- 151 stars
- Last commit

Mermaid diagram workspace with live preview, an infinite canvas and multi-page projects, served from your own Worker
- Deploy
- CLI
- License
- Apache-2.0
- GitHub stars
- 81 stars
- Last commit