Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Quick start

Rustiz is one binary. Build it, run init once, and point an agent at it. This page gets a local install working in about five minutes. For servers, Docker and TLS, see Self-hosting.

Alpha. Every provider is ported and tested against mock servers, but none has been tested against the live platform yet. Expect to debug the first real connection to each platform.

Source not public yet. The git clone URL below is a placeholder until the public release, so that command won’t work until the repository is published. The rest of this page describes a working local build once the source is available. The site’s waitlist is a disconnected preview for now; once it’s connected, choose “Self-hosting only” to be notified when the repository opens.

1. Build

You need a stable Rust toolchain. SQLite is built in. ffmpeg is optional and only used for video thumbnails.

git clone <repository-url> rustiz && cd rustiz
cargo build --release --locked -p rustiz
sudo install -m 0755 target/release/rustiz /usr/local/bin/rustiz   # optional

2. Initialise

rustiz init

This creates ~/.rustiz/ with a private config.env (holding JWT_SECRET, DATABASE_URL, FRONTEND_URL and RUSTIZ_API_KEY), the SQLite database and the first organization. It prints a JSON document that includes an mcpServers block for your agent. Running init again never replaces the secret or creates a second organization.

Back up JWT_SECRET together with the database. Stored channel credentials can’t be decrypted without it.

3. Check which platforms are ready

rustiz providers --status

Each provider reports whether it is configured, the names of any missing environment variables, and how a channel connects (oauth, customFields, telegramBot, …). Credential providers such as Bluesky, Dev.to, Medium, WordPress or Nostr need no server configuration at all. OAuth platforms need a developer app; each provider page walks through it.

4. Connect your agent

Local agent over stdio (Claude Desktop, Claude Code, Cursor, …): paste the block init printed. It looks like this and contains no secret:

{
  "mcpServers": {
    "rustiz": { "command": "/usr/local/bin/rustiz", "args": ["mcp"] }
  }
}

rustiz mcp runs the scheduler in the same process and, for a local FRONTEND_URL, also receives the platform’s login redirect. You don’t need a separate server. See MCP setup for client-specific instructions.

Or run the server for REST, remote MCP and the scheduler:

rustiz serve          # http://localhost:5000
curl http://localhost:5000/health   # -> ok

5. Connect an account and post

From the CLI:

rustiz channels connect bluesky --fields ./bluesky.json   # {"service":"https://bsky.social","identifier":"you.bsky.social","password":"app-password"}
rustiz channels connect x --open                          # after setting X_API_KEY / X_API_SECRET; opens the X login
rustiz channels list
rustiz posts create --channel <channel-id> \
  --content "<p>Hello from Rustiz</p>" \
  --date 2030-01-01T09:00:00Z --type schedule

Or ask your agent: “Connect my Bluesky account and schedule a post for tomorrow at 9:00 UTC.” It will call providersStatusTool, connectChannelTool, validatePostTool and schedulePostTool.

Posts only publish while rustiz serve, rustiz worker or rustiz mcp is running.

Next