A lightweight, self-hosted social media scheduler.
Draft once, tailor each destination, and publish from one clear calendar.
Try OpenPost
·
Watch the demo
·
Quickstart
·
Self-hosting docs
A focused scheduler, not another marketing suite
OpenPost handles the part that should be simple: preparing, adapting, scheduling, and publishing social posts.
- Write once, publish properly everywhere. Keep one source post and adjust the text, media, format, and settings for each destination.
- See the whole schedule. Plan posts in a calendar, reuse posting slots, and inspect queued, published, and failed work.
- Measure what each provider reports. Keep account growth and publication engagement history without treating views, impressions, and reach as the same metric.
- Create the media you need. Store reusable assets and build still images, carousels, and slideshow pages in OpenPost Studio.
- Keep brands separate. Workspaces isolate accounts, media, schedules, members, and automation access.
- Automate without sharing social credentials. Use the API, CLI, or MCP with revocable, workspace-scoped OpenPost tokens.
- Run it without an infrastructure project. One container or binary, SQLite and local media by default, and a built-in durable job queue. Redis is not required.
OpenPost stays deliberately narrower than an all-in-one social marketing platform. It does not try to bundle a CRM, ad manager, social listening suite, or enterprise benchmarking product into the scheduler.
|
|
| Connect each workspace to the channels it owns | Reuse assets and see where each file is used |
X, Mastodon, Bluesky, LinkedIn profiles and Organization Pages, Threads, Facebook Pages, Instagram Business and Creator accounts, TikTok, YouTube, and Discord webhooks are supported.
Provider review, app configuration, account eligibility, quotas, public-media access, or live-account verification may still limit a specific account or format. Check the provider matrix for current formats, media limits, and setup notes.
Self-host in a few minutes
git clone https://github.com/rodrgds/openpost.git
cd openpost
cp .env.example .env
docker compose up -d
Open http://localhost:8080, create the first account, and connect a provider. Bluesky is the fastest first test because it only needs a handle and app password.
The default Compose setup stores the SQLite database and uploaded media in one Docker volume. For a public instance, put OpenPost behind HTTPS and set the public URL before configuring OAuth providers.
Read the self-hosting quickstart →
Prefer not to operate it yourself? Use the managed app.
Built for reliable publishing
A scheduled post should not disappear because a process restarted. OpenPost stores publishing work in its database-backed queue and keeps the outcome visible in the app.
The self-hosted defaults stay small:
| Part | Default |
|---|
| Application | One Go binary with the SvelteKit app embedded |
| Database | SQLite |
| Media | Local storage |
| Queue | Built into the database |
| Optional scale-up | PostgreSQL and S3-compatible storage |
Provider credentials are encrypted at rest with AES-256-GCM. API and MCP tokens can be scoped to one workspace and revoked without reconnecting its social accounts.
Automation when you need it
The web app is the main place to review and control publishing. The same authorization, validation, quotas, and queue rules also cover:
- the typed HTTP API;
- the
openpost CLI for scripts, cron, and CI;
- the local and remote MCP interfaces for assistants and coding agents.
This lets an agent inspect workspace context, prepare destination-specific drafts, and hand the result back for review without receiving the underlying provider tokens.
CLI guide · MCP guide · API reference
Install another way
Releases include:
- Linux, macOS, and Windows server binaries;
- CLI and MCP binaries;
- the container image at
ghcr.io/rodrgds/openpost;
- an Android APK.
See the installation docs for binary installs, reverse proxies, storage, backups, and upgrades.
Contributing
OpenPost uses Go, Svelte 5, SvelteKit, and pnpm. The repository includes a Devenv shell so local commands match CI.
direnv allow
devenv shell -- setup
devenv shell -- verify
Read CONTRIBUTING.md and the development docs before opening a pull request. Bug reports, focused feature proposals, documentation fixes, and tested provider improvements are welcome.
Help OpenPost grow
If OpenPost is useful to you, star the repository. It helps other self-hosters find the project and tells us which work is worth continuing.
License and security
OpenPost is licensed under AGPL-3.0-only. Report vulnerabilities privately through the security policy.