licenseMITsourceopen
Your self-hosted social scheduler,
on your own Cloudflare account.
Mastodon, Bluesky, LinkedIn, Threads and X. Write a draft, customize it per platform, then publish it now or schedule it. No subscription — it runs on Cloudflare's free plan.
No terminal, nothing to install: Cloudflare copies a prebuilt release into your GitHub and deploys it. Bring a Cloudflare account and an encryption key.
Prefer a terminal?Features
A thread editor, a queue and a retry rule.
Enough to run a presence on five networks from one place — with the delivery stats that tell you what broke, and none of the vanity charts you would never open.
Posts
Everything you scheduled, in one list
Scheduled, published, failed and draft, with the account icons right there. Cancel or reschedule a queued post without opening it.
- Per-destination results
- Cancel and reschedule straight from the list
Insights
Delivery stats that tell you what broke
Published against failed, bucketed by your local days, with the same period before it alongside. Failures are grouped by reason, so a platform-wide problem looks different from one bad post.
- 7, 30 and 90 day ranges, in your own timezone
- Failure reasons grouped, not a wall of API errors
- Last post at a glance, so a silent week is obvious
Per-platform overrides
Rewrite the post for X without touching the LinkedIn version.
Threads that split themselves
Paste a long draft and it becomes a thread that fits the tightest platform you picked, counted the way each one counts.
Publish now or schedule
Send it immediately or pick a time. Every destination carries its own status.
Retries handle themselves
Retryable failures back off on their own — five attempts, then they park in Failed.
Media with alt text
Up to four images per post, with alt text on each one.
Link previews
See the card a URL will make while you are still writing the post.
An API and an MCP server
Let scripts, Shortcuts and AI agents like Claude Code draft, schedule and publish with a personal key. It can never connect accounts or mint keys.
A scheduler you can see
Settings shows the running version, whether the tick is arriving, and when a newer release is out.
Install
One click, about five minutes.
You need a Cloudflare account with Workers, D1 and R2, and a GitHub or GitLab account. Nothing to install.
Generate your key
A random key, made in your browser and sent nowhere. Keep a copy in your password manager: the next two steps ask for it.
Deploy to Cloudflare
Sign in to Cloudflare and GitHub. Cloudflare copies a prebuilt release into a repository of yours, creates the database and the bucket, and deploys it. Paste the key when the form asks.
Create your account
Open your new URL, enter the same key, an email and a password, and scan the QR with an authenticator app. Later releases install from your repository, no token needed.
Prefer a terminal?
For changing the code, or deploying without GitHub. You need Node 22.17+, 24 or 26+ and the same Cloudflare account; setup is the whole install.
Clone and run setup
It creates the D1 database and the R2 bucket, generates the secrets, creates your account, applies migrations and deploys. Safe to re-run.
$ git clone --depth 1 https://
github.com/ cogsend/ cogsend.git cogsend $ cd cogsend && npm install && npm run setup Check it worked
Read-only. It confirms the Cloudflare account, the database, the bucket, the secret and the deploy. Every failure prints the command that fixes it.
$ npm run doctor # add -- --app-url <url> to ask the live app too
Sign in and connect
Open the URL setup printed, sign in, and scan the QR with an authenticator app. Mastodon and Bluesky connect straight away; LinkedIn, Threads and X each need a developer app of your own first.
Every command, flag and failure mode is in the install and deploy guide.
Questions
Before you deploy.
What does it cost?
Nothing, for a personal instance. There is no subscription, nothing to cancel, and no account with us — you deploy it to your own Cloudflare account, on Cloudflare's free plan. A personal instance stays well inside it.
The one thing Cloudflare asks for is a card on file for R2, the bucket that stores your images. Workers and D1 never ask for one, and you are only charged if you go past the free limits.
What happens if I hit a Cloudflare limit?
- Storage. R2 keeps the first 10 GB free, and traffic out is always free.
- Cron triggers. Five per account, shared with every other Worker you run. If they are taken, drive the scheduler from your own timer instead.
- The database. D1 pauses for the day past 100,000 rows written. It resumes at midnight UTC, and nothing is lost.
Numbers can change: Workers limits, D1, R2.
Do I need a developer app for every platform?
No. Mastodon and Bluesky connect with what you already have. LinkedIn, Threads and X need an app you register with them first, because they issue the client id and secret your Worker uses. Pick one and the app shows you exactly what to create, takes the credentials in a form, and can hand the whole setup to a browser agent.
X also charges for posting. Its API is pay-per-use, so fund a small balance before you connect it. See OAuth app setup.
If you would rather not register apps, you can connect them through Zernio instead. It has a free plan, though X needs a card there.
Can AI agents like Claude Code use CogSend?
Yes. Your instance includes an MCP server, so Claude Code, Codex or any MCP client can draft, schedule and publish with your personal API key. A read-only key lets an agent look without posting. See MCP server.
How do I update it later?
CogSend tells you when a release is out, with a dot on your avatar and a line in Settings. Installed with the Deploy to Cloudflare button, run the Update CogSend action in your repository, which checks the release's signature and lets Cloudflare deploy it, or let it install patch releases by itself. No Cloudflare token is needed.
Any install can also update from Settings with a Cloudflare token, which it can remember, locked with your password, or from a checkout with
npm run deploy:release. Your posts, images and secrets live in your Cloudflare account, so an update cannot touch them. See Updating.Where do my posts and credentials live?
In your Cloudflare account, in the database and bucket the deploy created for you. Platform tokens are encrypted at rest with AES-256-GCM, and the single admin account signs in with an authenticator app and backup codes. Nothing about your instance lives with us.
Yours in about five minutes.
One click and the Cloudflare account you already have. No signup, no trial, no monthly bill, and no one else holding your credentials.