Via Claude Code
One command adds Rustiz as a local MCP server.
claude mcp add rustiz -- rustiz mcp
Rustiz is one Rust binary and one SQLite file that gives an AI agent everything it needs to post: MCP, a REST API and a CLI. It's an open-source port of Postiz without the GUI.
you › Post the launch note on X and Bluesky tomorrow 09:00 UTC, then reply with the docs link.→ integrationList x @acme cm3x… bluesky acme.bsky.social cm3b…→ validatePostTool ✓ x 214/280 ✓ bluesky 214/300→ schedulePostTool { idempotencyKey: "launch-1", type: "schedule", date: "2026-11-10T09:00:00Z", postsAndComments: [post, reply] } ← 2 posts queued · group g_8f2a
Measured 2026-11-08 on an Apple M4, release build, empty database: 7 cold starts at 97–128 ms; idle RSS 18.8–19.5 MB (25.8 MB after load); ab -k -c 32 on GET /public/v1/integrations with rate limits off. Method →
There's no calendar to click through. Your agent connects accounts, validates and schedules posts, and checks the results itself. A human only steps in for a platform's login screen.
Over MCP, your agent calls connectChannelTool. For an OAuth platform such as LinkedIn, Rustiz returns a pending connection and a login link, and the agent hands that link to a person.
CLI: rustiz channels connect linkedin
They open the link and log in on the platform's own page, which sends them back to Rustiz. The agent polls with the connectionId until it reports connected: true. Credential platforms such as Bluesky, WordPress and Nostr skip this step: they connect without a browser.
CLI: rustiz channels connect-status <connectionId>
validatePostTool checks the post against the platform's rules and creates nothing. schedulePostTool queues it with an idempotencyKey, so a retry returns the first result instead of posting twice.
CLI: rustiz posts create --channel <id> --content "…" --date 2026-11-10T09:00:00Z
The built-in scheduler publishes the post at its date while rustiz serve, rustiz worker or rustiz mcp is running. The agent reads the outcome with postStatusTool (QUEUE, PUBLISHED or ERROR, with the post's URL), or subscribes for live updates.
CLI: rustiz posts get <id>
Illustration with example data. The same steps work over MCP, the CLI or the REST API. Integrations are ported and tested against mock servers, but none has been checked against the live platform yet.
Give Claude, Cursor or your own agent a reliable posting tool, with idempotent scheduling and validation it can call before anything goes out.
A REST API and a JSON-only CLI with typed exit codes. Script it, cron it, or wire it into your product.
One process and one file to back up. It runs on a laptop or a small VPS with about 19 MB of RAM, with no Postgres, Redis or Elasticsearch.
There are 31 MCP tools, and the tool names match Postiz's, so prompts written for Postiz keep working. Or skip MCP and use the CLI or REST API.
One command adds Rustiz as a local MCP server.
claude mcp add rustiz -- rustiz mcp
Paste the block rustiz init prints. It contains no secret.
{ "mcpServers": { "rustiz": {
"command": "/usr/local/bin/rustiz",
"args": ["mcp"] } } }
Point it at your server or the cloud with a Bearer key, or use OAuth.
{ "mcpServers": { "rustiz": {
"url": "https://you.example/mcp",
"headers": { "Authorization":
"Bearer <key>" } } } }
Any client that can launch a command or speak Streamable HTTP works.
[mcp_servers.rustiz] command = "rustiz" args = ["mcp"]
One JSON document per command. It works with no server running.
rustiz posts create --channel cm3x… \ --content "<p>Shipped.</p>" \ --date 2026-11-10T09:00:00Z
A /public/v1 API that follows Postiz's paths.
curl -X POST $HOST/public/v1/posts \ -H "Authorization: Bearer $KEY" \ -d @post.json
Each tool is designed so an agent can run it unsupervised without double-posting, posting broken content, or getting stuck on a login.
If the same call is sent again within 10 minutes, or reuses an idempotencyKey within 24 hours, Rustiz returns the first result. Edits are refused while a post is being published.
→ schedulePostTool { idempotencyKey: "launch-1", … } ← group g_8f2a · 2 posts queued # network blip, the agent tries again → schedulePostTool { idempotencyKey: "launch-1", … } ← group g_8f2a · same result, nothing new
validatePostTool checks length, threads, media and settings against each platform's rules, and creates nothing, so the agent can fix problems before it schedules.
→ validatePostTool { socialPost: [x, instagram] } ✓ x 214 / 280 characters ✗ instagram needs at least one image or video
OAuth platforms return a login link for a person to open. Credential platforms such as Bluesky, WordPress and Nostr connect without a browser. The agent polls until the account is ready.
→ connectChannelTool { provider: "linkedin" } ← pending · url: https://www.linkedin.com/oauth/… (a human opens the link and logs in) → connectChannelTool { connectionId: "…" } ← connected: true
Reschedule or rewrite a queued post and it keeps its id.
Subscribe to rustiz://posts/<id> and get notified when a post changes state.
Self-hosted has no user accounts to manage: one key per organization, and rotating it revokes every token.
Postiz bundles image and video generation. We took it out. Image and video generation is a specialty, and dedicated tools such as Higgsfield do it far better than a scheduler's side feature ever could.
Agents perform best when every tool does one job well. A media generator makes the media, and Rustiz publishes it. Neither has to settle for less.
Your agent creates media in Higgsfield or any tool you like, then passes the URL to uploadFromUrlTool and attaches it to the post. That's two tools and no lock-in.
There are no model fees in your plan and no generation credits to buy. This is a big part of why the binary is 16.9 MiB and the cloud plans cost less.
Higgsfield is named as an example of a dedicated generation tool. Rustiz isn't affiliated with Higgsfield, and any tool that outputs a public URL works.
Postiz is a full app with a visual calendar and editor. Rustiz keeps the scheduling engine and drops the rest, so it fits in one process.
| Postiz (self-hosted, docker-compose) | Rustiz | |
|---|---|---|
| What you run | 9 services in the official compose file (8 by default): the app, Postgres ×2, Redis, Elasticsearch, and Temporal with its admin tools and UI compose file | 1 processAPI, MCP, scheduler and OAuth callbacks |
| Data | Postgres ×2, Redis, Elasticsearch compose file | 1 SQLite fileWAL mode |
| Memory | ~2–4 GB+ for the full stack estimate | ~19 MBidle, ~26 MB after load measured |
| Install | Several container images; total size not measured | 16.9 MiBsingle binary measured |
| Startup | Tens of seconds for the full stack estimate | 97–128 msto healthy measured |
| Interface | Web app with calendar and editor, plus API and MCP | MCP, REST and CLI. No web GUI. |
| AI generation | Built in | Left out on purpose: use a dedicated tool |
Postiz figures marked "estimate" were not measured. The service list comes from the official postiz-docker-compose file, checked 2026-11-08. Rustiz is an independent port and is not affiliated with or endorsed by Postiz. Method →
They're grouped by how much setup each platform needs before a channel works. Each one links to its setup guide.
Every integration is fully ported and passes its tests against mock servers, but none has been checked against the live platform yet. That's what the alpha is for, so expect fixes the first time each platform connects for real. Postiz's Skool integration wasn't ported, because it needs a browser extension.
Paste credentials or claim the account. There's nothing to register.
Create an app or bot in the platform's portal and connect right away.
Test accounts work right away. Public use needs the platform's review or a paid API tier.
Needs an access request, a business account, or a paid partner API.
The managed cloud adds what the open-source binary leaves out: hosting, login, email and billing. These are the planned prices for the public alpha.
Solo builders and side projects
$5 for the first month, then $10/mo
X via our shared app: 50–100 posts/month. Bring your own X keys to remove the cap. Farcaster needs your own Neynar key.
Pre-orderCreators and small brands
billed monthly
Startups running several brands
billed monthly
Teams with heavy agent traffic
billed monthly
Agencies managing many clients
billed monthly
It's AGPL-3.0, with no channel limits and no license keys. You register your own developer apps with each platform, and run your own TLS, email and backups.
Read the quick start →The source and release binaries aren't public yet. Join the waitlist to hear when they are.
$ cargo build --release --locked -p rustiz $ rustiz init $ rustiz providers --status $ rustiz serve REST /public/v1 · MCP /mcp · :5000
For comparison, Postiz lists its hosted plans at $29, $39, $49 and $99 a month for 5, 10, 30 and 100 channels (postiz.com/pricing, checked 2026-11-08). Media storage covers uploads in a rolling 30-day window. Prices are in USD.
Pre-orders aren't live yet and no payment is taken. Leave your email and we'll tell you when the Rustiz Cloud alpha opens.
A pre-order will reserve a seat in the public alpha of Rustiz Cloud, the managed version of Rustiz, at the plan and price you choose. Checkout isn't live yet and no payment is taken. Join the waitlist below and we'll email you when pre-orders open. The alpha target is TBA.
"Alpha" means it works, but expect rough edges, especially the first live connection to each platform. Once pre-orders open, we'll email you before your access starts.
TODOConfirm when the card is charged: at checkout, or when alpha access starts (for example, a Stripe trial that runs until launch).
TODODraft, to confirm: "If the alpha doesn't ship by the target date, or you change your mind before your access starts, contact us and we'll refund your pre-order in full. After access starts, you can cancel any time and won't be billed again."
It's a deliberate choice. Dedicated generators such as Higgsfield make better media than a scheduler's built-in feature, and agents work better with focused tools. Your agent generates media wherever it likes, then calls uploadFromUrlTool and attaches the result. That also keeps model costs out of your plan.
No. Rustiz is an independent Rust port of Postiz v1.47.0, and it's not affiliated with or endorsed by Postiz or its authors. Postiz is AGPL-3.0, so Rustiz is too, and the original copyright notice is kept.
Yes. Rustiz is AGPL-3.0, and self-hosting is free forever with every feature. If you run a modified version as a network service, the AGPL requires you to offer its source code to its users. The paid product is only the managed cloud.
Rustiz keeps Postiz's MCP tool names, its /public/v1 API shape and its platform environment variable names, so your developer apps and agent prompts carry over. You only need to point the redirect URIs at your new server.
There's no data import. You reconnect each account (one login per channel) and recreate any posts still in the queue. If your team schedules by hand in Postiz's calendar, Rustiz isn't a replacement for that.
Not yet. The port is complete and tested, but only against mock servers, and no integration has published to a live platform yet. The alpha is where that gets fixed, one platform at a time.
Both cost us per use. Posting to X through our shared app is capped at 50–100 posts a month on Indie, and adding your own X API keys removes the cap. Farcaster needs Creator or higher, or your own Neynar key.
Only media uploaded in the last 30 days counts toward your plan's storage limit.