Scheduler
Use the Scheduler app when humans need a web UI for connected accounts, composing posts, drafts, previews, publishing, and scheduling. It is also the account hub for MCP and for CLI mode that uses Scheduler-connected accounts.
Open the hosted app at schedule.simplepost.dev.
What to do in the app
- Sign in.
- Open Accounts.
- Connect the social accounts you want to post to.
- Open the compose screen.
- Select accounts, write the post, attach media if needed, and save a draft, publish now, or schedule for later.
Connected accounts are available to:
- The Scheduler compose UI.
- The remote MCP server at
/mcp. - The CLI after
simplepost connect.
X credits
X API access is paid separately by X. The hosted Scheduler tracks X posting credits so one user cannot accidentally consume unlimited X posting capacity.
- New users start with 10 X posting credits.
- One selected X account costs one credit per post attempt.
- If you select multiple X accounts, each selected X account consumes one credit.
- When credits reach zero, Scheduler blocks posts that include X accounts.
- Non-X platforms do not consume X posting credits.
For self-hosted deployments, the credit count lives on the user.xPostingCredits column in the Scheduler database. Top up by updating that column directly or building an admin workflow around it.
Daily rate limits
Scheduler also checks per-platform daily posting limits before publishing. The current defaults are:
| Platform | Posts per 24 hours |
|---|---|
| X | 50 |
| YouTube | 2 |
| 10 | |
| 10 | |
| Telegram | 50 |
| TikTok | 5 |
| Bluesky | 50 |
| Threads | 25 |
| 5 | |
| 50 |
These are Scheduler-level guardrails, not a promise that each social platform will accept every post. The social platforms can still apply their own quota, moderation, app-review, or account-level limits.
MCP from Scheduler
The Scheduler app hosts the MCP server:
https://schedule.example.com/mcp
The MCP server uses OAuth through the Scheduler app. The AI client never receives raw social platform credentials. Users connect accounts in Scheduler first, then authorize the AI client.
Read MCP for client setup, tools, scopes, and recommended agent workflow.
Self-host the Scheduler
From the core repo:
yarn install
cp scheduler/.env.example scheduler/.env
Fill in scheduler/.env, then run:
yarn workspace @simple-post/scheduler db:migrate
yarn workspace @simple-post/scheduler dev
Required environment:
| Variable / service | Why |
|---|---|
DATABASE_URL (Postgres) | Users, sessions, accounts, posts, and schedules. |
S3_STORAGE_* | Uploaded media and thumbnails. See media storage. |
BETTER_AUTH_SECRET | App auth and session signing. |
SCHEDULER_ENCRYPTION_KEY | Encrypts connected account secrets. Generate with openssl rand -base64 32. |
RESEND_API_KEY, RESEND_FROM_ADDRESS | Email login. |
SCHEDULED_POST_DISPATCH_SECRET | Bearer token for the dispatch endpoint described below. |
NEXT_PUBLIC_APP_URL | Public origin used for OAuth callbacks, CLI authorization, and MCP metadata. Defaults to http://localhost:3000. |
| Social platform apps | *_CLIENT_ID / *_CLIENT_SECRET for X, Google, Meta (Facebook + Instagram + Threads), TikTok, LinkedIn, Pinterest, and Bluesky. See scheduler/.env.example for the full list. |