Getting Started¶
Prerequisites¶
X Developer App (takes ~2 minutes)¶
- Go to developer.x.com/en/portal/dashboard
- Create a Project and App (or select an existing one)
- Under "User authentication settings", enable OAuth 2.0:
- Type: Web App
- Callback URL:
http://127.0.0.1:8080/callback - Copy the Client ID from the "Keys and tokens" tab
You also need funded X API credits (pay-per-usage; see X API pricing).
LLM Provider (pick one)¶
- OpenAI — requires API key (platform.openai.com)
- Anthropic — requires API key (console.anthropic.com)
- Ollama — free, runs locally, no API key needed (ollama.com)
Rust (source builds only)¶
Rust 1.75+ is only needed if building from source. Precompiled binaries are available on the Releases page.
1. Desktop App (Recommended for most users)¶
- Download the latest
.dmg(macOS),.exe(Windows), or.AppImage(Linux) from the Releases page. - Open the app and follow the Onboarding Wizard.
- The app will guide you through connecting your X account — your business profile is pre-filled from your X bio and recent posts. An LLM provider and content sources can be added later in Settings.
The app runs quietly as a system tray icon, discovering conversations and drafting content for your review.
2. Docker Self-Hosted¶
For 24/7 automation on a VPS:
git clone https://github.com/aramirez087/TuitBot.git
cd TuitBot
cp .env.example .env
# Edit .env with your API keys
docker compose up -d
Navigate to http://localhost:3001 for the full web dashboard.
3. CLI — Hello World in Under 2 Minutes¶
Install¶
curl -fsSL https://raw.githubusercontent.com/aramirez087/TuitBot/main/scripts/install.sh | sh
Or install from source:
cargo install tuitbot-cli --locked
Precompiled binaries are also available on the Releases page.
Run the setup wizard¶
tuitbot init
This single command handles everything:
- 5 quick questions — product name, keywords, LLM provider, API key, X Client ID
- LLM validation — confirms your AI provider is reachable
- X authentication — OAuth flow to connect your account
- Configuration check — verifies everything works
- Dry-run preview — shows what the bot would do (no posts)
The wizard includes inline guidance at the X API Client ID step (the same 4-step guide from Prerequisites above).
Everything else gets safe defaults (UTC timezone, approval mode on, conservative rate limits).
Tip: If you run any
tuitbotcommand without a config file, it will offer to launch the setup wizard automatically.
What you'll see¶
Tuitbot Quick Setup
───────────────────
Before we start, have these ready:
• X API Client ID — from https://developer.x.com
• An LLM API key — OpenAI, Anthropic, or Ollama (free, local)
5 questions to get you running. Use --advanced for full configuration.
? Product name: YourApp
? Discovery keywords: rust, cli, devtools
? LLM provider: openai
? OpenAI API key: sk-...
✓ Connected to openai (gpt-4o-mini, 340ms)
? X API Client ID: abc123...
Configuration Summary
─────────────────────
Product: YourApp
Keywords: rust, cli, devtools
LLM: openai (gpt-4o-mini)
X API: abc123... (Client ID set)
Approval: on (all posts queued for review)
? Save configuration? [Y/n]
? Connect your X account now? [Y/n]
? Verify everything works? [Y/n]
? Preview the bot? (dry run, no posts) [y/N]
Standalone commands¶
Each step also works as a standalone command if you prefer:
tuitbot auth # authenticate with X
tuitbot test # verify everything works
tuitbot tick --dry-run # see the bot in action (no posts)
Choose your run mode¶
| Mode | Command | Best for |
|---|---|---|
| Daemon | tuitbot run |
Long-running process (tmux, VPS, systemd) |
| Scheduler | tuitbot tick |
External schedulers (cron, launchd, systemd timer) |
4. MCP-Only Setup (Claude Code, Cursor, etc.)¶
If you only need Tuitbot as an MCP server for your AI coding assistant (no LLM or business profile required):
tuitbot mcp setup
This streamlined wizard handles:
- X API Client ID — with inline guide
- OAuth authentication — connects your X account
- Profile selection — write, readonly, or admin
- Auto-registration — detects Claude Code and runs
claude mcp addfor you
For non-interactive environments, use env vars directly:
claude mcp add -s user -e TUITBOT_X_API__CLIENT_ID=your_client_id tuitbot -- tuitbot mcp serve
See the MCP Reference for profiles, tool counts, and configuration details.
Content Sources (Optional)¶
Content sources feed your notes, ideas, and expertise into TuitBot's AI engine (Watchtower / Winning DNA). This step is optional but improves content quality.
| Deployment | Recommended Setup |
|---|---|
| Desktop | Open Settings > Content Sources. Point to your Obsidian vault or Markdown notes folder. |
| Self-Hosted | Open the browser dashboard > Settings > Content Sources > Connect Google Drive. |
| Cloud | Connect Google Drive during onboarding, or later in Settings. |
Desktop users get a native file picker; self-hosted and cloud users use the OAuth-based Google Drive connection flow in the browser. See the Configuration guide for manual TOML setup.
Progressive Enrichment (Optional)¶
The quickstart gets you running fast with safe defaults. The dashboard onboarding handles initial profile setup automatically if you connect your X account. When you're ready for better results, enrich your profile in stages:
tuitbot settings enrich
This walks you through three stages — complete them in any order, whenever you want:
| Stage | What it configures | Why it matters |
|---|---|---|
| Voice | Brand voice, reply style, content style | Shapes every LLM-generated reply and tweet |
| Persona | Opinions, experiences, content pillars | Makes content authentic and distinctive |
| Targeting | Target accounts, competitor keywords | Focuses discovery on high-value conversations |
You can also jump directly to any stage:
tuitbot settings voice
tuitbot settings persona
tuitbot settings targets
Check your enrichment status anytime:
tuitbot test
# Shows: Profile: Voice OK Persona -- Targeting --
Full setup wizard¶
If you prefer to configure everything upfront in one pass:
tuitbot init --advanced
This runs the full 8-step wizard covering X API credentials, business profile, brand voice, persona, target accounts, approval mode, schedule, and LLM provider.
Non-interactive setup¶
For CI/CD, Docker, or scripted environments:
tuitbot init --non-interactive
This copies a template config.toml that you edit manually. Pair with environment variables for secrets:
export TUITBOT_X_API__CLIENT_ID=your_client_id
export TUITBOT_LLM__API_KEY=sk-your-key
Updating¶
tuitbot update
Checks for new releases, updates the CLI binary (and tuitbot-server if installed on PATH), and upgrades your config with any new settings.
Validation¶
After any config change, verify with:
tuitbot test # full diagnostic check
tuitbot settings --show # read-only config view