Send to reMarkable
August 5, 2025 ยท View on GitHub
A Cloudflare Worker service that lets you upload documents to your reMarkable tablet via email or web upload. A public version is hosted under my domain. Note that signups are disabled on this instance.
Most of the code in this repo was generated by AI, and vetted by me. The method for uploading was found by hand, and structure of the codebase was human-designed.
Key Files
src/index.ts- Main API routes and email handlersrc/auth-do.ts- Durable Object for authentication managementsrc/workflow.ts- Workflow for reMarkable API uploadssrc/upload-utils.ts- Shared upload logicassets/index.html- Web interface
Self-Hosting Setup
Prerequisites
- Cloudflare account with Workers and R2 enabled
- Domain managed on Cloudflare
0. Clone the repo and install dependencies
git clone https://github.com/zegevlier/send-to-remarkable
npm i
1. Create R2 Bucket
npx wrangler r2 bucket create send-to-remarkable-docs
2. Configure Email Routing
- Go to Cloudflare Dashboard -> Your Domain -> Email
- Enable Email Routing
- Enable catch all for the domain. We will point this to the worker later.
3. Deploy Worker
-
Update
wrangler.jsonc:- Change
nameto your preferred worker name - Update the route pattern to the (sub)domain you want to use
- Update R2 bucket name if different
- Enable sign-ups on your instance by setting the
SIGNUP_DISABLEDenvironment variable (at the bottom of the file) tofalse.
- Change
-
Deploy:
npm run deploy
4. Connect Email Routing
- After deployment, go back to Email Routing settings
- Select your deployed worker as the destination for the catch-all rule
- Save the configuration
Usage
Now you can visit the (sub)domain you configured earlier and start using it! After signing up yourself, I recommend disabling signups by setting the SIGNUPS_DISABLED environment variable to true (or anything other than false).