Core concepts
A few ideas explain how OmniPost behaves.
A distribution layer, not a content generator
OmniPost never writes content. It takes a prepared title and Markdown body and handles the stateful, error-prone part: platform accounts, formatting, drafts, publishing, scheduling, and records. Keeping generation and distribution separate means you can change models or editors without touching your publishing reliability.
One core, four interfaces
There is a single publishing core. Everything talks to it through a local HTTP API on 127.0.0.1:8787:
- Desktop UI — for people: tabs for Distribute, Records, Scheduled tasks, Account/subscription, and an integration guide.
- HTTP API — localhost-only (non-local requests get a 403), for your own integrations.
- CLI — for scripts and agents that don't speak MCP.
- MCP — for agents like Claude Code and Codex.
Because they share one core, the four interfaces never drift apart.
Targets: platform + account
You can address content three ways, combined and de-duplicated:
platforms— every logged-in account on a platform.targets— a specific account, e.g.csdn:default,csdn:a2.groups— a named set of accounts you saved.
Three modes: draft, publish, schedule
- Draft is the safe default — content is staged on the platform, nothing public.
- Publish attempts a real post, and only works on platforms that support automatic publishing.
- Schedule stores a content snapshot and target list, then publishes at the chosen time.
Honest results
OmniPost never fakes success. Every target returns a structured result with a stage (draft or published) and, when something is skipped or fails, a reason code. A platform that only supports manual publishing will create a draft and return MANUAL_PUBLISH with an editor URL — it will not pretend the post went live. See Publishing for the full result model.
Real, isolated browser sessions
For platforms without an open API, OmniPost logs in through a real Electron browser window that you drive yourself, and runs publishing requests inside the platform's own page — genuine cookies, TLS, and origin, not a fragile extension. Each account lives in its own isolated storage partition, so you can keep many accounts side by side.
Local by default
Accounts, records, schedules, groups, policy, and license all live under ~/.omnipost/. Login cookies stay in isolated browser partitions on your machine. Platform calls go directly from your machine to each platform.
Free and Pro
The free tier covers a core set of developer platforms, a few accounts, and drafts. Real publishing, agent automation, scheduling, and account groups are Pro. See Publishing for the exact limits.