PENDPOST_MODE=mock. Pick whichever path fits your workflow.
Install and run
- git
- npx
- docker
Clone the repository and enter it:The server has zero runtime dependencies, so no root install is needed. Just start it. This builds the dashboard on first run, then boots:Or run the binary directly. This is equivalent, the same build-on-first-run entry point:Then open:
First run
Start it withPENDPOST_MODE=mock and every platform lane runs through the credential-free mock driver: no real API calls. Mock mode runs in a private demo workspace in your temp folder, which opens on an example Acme Launch campaign so the dashboard shows real content instead of an empty screen. Without PENDPOST_MODE=mock, pendpost is live, so an unconnected lane waits for its credential rather than publishing. On pendpost 2.8.0 and earlier, also set PENDPOST_ROOT=/tmp/pendpost-demo for mock mode (see Mock mode).
From the dashboard you can walk the full loop: draft a post, approve it, schedule it, watch it publish through the mock driver, and read back fabricated insights. See Mock mode for the complete walkthrough.
Mock runs do not exercise rate limits, native scheduling, or the Meta 368 breaker; those engage only on a live lane. See Mock mode for what mock does and does not cover.
Drive it headless
The samenpx pendpost (or npm start) boot also exposes the MCP server, so an agent can run onboarding without the dashboard. Connect an MCP client, call pendpost_health to confirm readiness, then plan_list to read the workspace (a fresh install shows the example Acme Launch campaign), then campaign_create to start your own. See MCP to connect a client.
pendpost binds
127.0.0.1 (loopback) by default. The docker image binds 0.0.0.0 inside the container, but docker compose still maps the port to loopback on your host only.Going live later
When you are ready to publish for real, add credentials for the platforms you use in your own.env. Every lane is already live; adding a credential is what lets that lane actually publish instead of waiting unauthenticated. (A lane only runs through the mock driver when you set PENDPOST_MODE=mock.) See:
Meta
Facebook and Instagram.
Organization page posting.
YouTube
Video uploads with native scheduling.
X (Twitter)
OAuth 1.0a or 2.0 PKCE posting.
Telegram
Channel posting via a bot.
Discord
Channel posting via a webhook.
Subreddit posting (beta).
Board pins (beta).
TikTok
Video uploads (beta).
Mastodon
Instance posting via an access token.
Nostr
Text notes to relays (Node 22+).
WordPress
Posts via an application password.
Ghost
Posts via the Admin API.
Google Business Profile
Local posts (beta).