Start hands-on. Scale to hands-off.
The agent-first social media planner.
An AI agent drafts and schedules your posts, and nothing publishes until you approve.
$ npx pendpost
launch day saleDraftInstagramAn agent drafted this post and picked a time.
See it in motion
The whole loop, in twenty seconds.
An agent drafts across every channel, you clear the gate, and pendpost ships it to Instagram, Facebook, LinkedIn, YouTube, X, Telegram, Discord, Mastodon, Nostr, and more. Here is the entire flow.
Why not just a scheduler?
A scheduler queues posts. pendpost operates a workflow.
An ordinary scheduler assumes a person wrote every post and just wants it sent later. pendpost is built for the moment an agent drafts on your behalf: the agent does the work, and a human stays in control of what ships.
An ordinary scheduler
- Trusts whatever lands in the queue and posts it on time.
- Has no notion of who authored a post or whether anyone signed off.
- Keeps firing into a platform even after it has started blocking you.
- Leaves caption quality entirely up to you.
- Is usually a hosted service that holds your accounts and your data.
pendpost
- Holds every post as a draft until a human approves it. Fail-closed by default.
- Tracks the actor on each post, so drafting and approving stay separate steps.
- Trips a circuit breaker on a Meta action block and stops sending until you clear it.
- Lints captions against editable rules before anything can publish.
- Runs local-first on 127.0.0.1, with your secrets in your own .env, and nothing phones home.
- Autonomy is a dial: approve every post, auto-approve the lanes you trust, or go fully hands-off. Only you can turn it on, and you can turn it off at any time.
Nothing publishes until it is approved, only you can switch auto-approve on, and you stay responsible for each platform's terms.
What makes it different
Three load-bearing differentiators
A plain scheduler is queue-and-fire. Once an agent is in the loop, the scarce, accountable things are the gate between draft and publish, the brakes that keep an account from getting banned, and the editor that keeps machine-written copy from reading like it.
Human approval gate
Every post has an approval state (draft, approved, or rejected) and the system is fail-closed: a post with no approval will not publish. Creating a post always yields a draft. Nothing publishes until it's approved. By default that's you; auto-approve is owner-only and revocable.
Anti-ban circuit breakers
A Meta error 368 (action block) trips a breaker that halts the Meta lane and never auto-resumes, because 368 carries no machine-readable clear time. The owner clears it explicitly once Meta lifts it, and health probes send zero Graph traffic while blocked. A cadence cap defers bursts rather than dropping them, and a lane pause kill switch is always available.
Humanizer brand-lint
Captions are checked before publish against an editable rules.json. The humanizer layer flags English AI-writing tells, errors block a publish, and warns are advisory. Built-in matchers cover caption length, hashtag count, all-caps, and broken links, plus regex rules for AI vocabulary tics like em-dash overuse and negative parallelism.
Straight answers
Two questions people ask before installing.
Will it post when my computer is off?
It depends on the platform. Facebook, YouTube, Mastodon, WordPress, and Ghost schedule natively and fire on their own. Instagram, LinkedIn, X, Telegram, Discord, and Nostr need pendpost running at publish time: keep it on an always-on host or use the 24/7 cloud.
Is pendpost for me?
Yes if you can run a Node.js or Docker process, want an agent drafting with you approving, and care about owning your accounts and data. Probably not if you want a hosted product with a team login and nothing to install, or a mature suite today: pendpost is young and has rough edges.
Start in one command.
Free, MIT, local-first. With no credentials set it runs in mock mode, so you can try the whole loop before connecting anything. Prefer not to run it yourself? The 24/7 cloud keeps it publishing while your machine is off.
$ npx pendpost