X Intelligence CLI — search, monitor, analyze, and engage on X/Twitter from your terminal.
Search X like a pro. Full-text search, real-time monitoring, follower tracking, AI sentiment analysis, and structured export — all from CLI.
- For AI Agents — designed as a skill for Claude Code, OpenClaw, and other coding agents
- For Researchers — OSINT, market intelligence, trend tracking without leaving the terminal
- For Developers — JSONL/CSV export, Unix pipeline integration, MCP server for AI agent tools
- Fast — built on Bun, typed TypeScript, smart caching
Spiritual successor to twint (archived 2023).
curl -fsSL https://raw.githubusercontent.com/0xNyk/xint/main/install.sh | bashOptional pinned version:
XINT_INSTALL_VERSION=<version-tag> \
curl -fsSL https://raw.githubusercontent.com/0xNyk/xint/main/install.sh | bashHomebrew (lightweight prebuilt binary on Apple Silicon):
brew tap 0xNyk/xint
brew install xintRust variant explicitly:
brew install xint-rsManual source install:
git clone https://github.com/0xNyk/xint.git
cd xint
bun installRequires: Bun · X API access (prepaid credits)
| Task | Command |
|---|---|
| Search | xint search "AI agents" |
| Monitor | xint watch "solana" -i 5m |
| Stream | xint stream |
| Profile | xint profile @elonmusk |
| Thread | xint thread 123456789 |
| Followers | xint diff @username |
| Bookmarks | xint bookmarks |
| Lists | xint lists |
| Blocks | xint blocks |
| Mutes | xint mutes |
| Follow | xint follow @username |
| Media | xint media <tweet_id> |
| Trends | xint trends |
| AI Analyze | xint analyze "best AI frameworks?" |
| Report | xint report "crypto" |
| Article | xint article <url> --ai "summarize" |
| Capabilities | xint capabilities --json |
| TUI | xint tui |
xint s "query" # search
xint w "query" # watch
xint p @user # profile
xint tr # trends
xint bm # bookmarks# Built-in themes: classic | neon | minimal | ocean | amber
XINT_TUI_THEME=ocean xint tui
# Disable animated hero line
XINT_TUI_HERO=0 xint tui
# Disable icons in menu rows
XINT_TUI_ICONS=0 xint tui
# Force ASCII borders
XINT_TUI_ASCII=1 xint tui
# Optional theme token file
XINT_TUI_THEME_FILE=./tui-theme.tokens.example.json xint tui# Built-in themes: classic | neon | minimal | ocean | amber
XINT_TUI_THEME=ocean xint tui
# Disable animated hero line
XINT_TUI_HERO=0 xint tui
# Disable icons in menu rows
XINT_TUI_ICONS=0 xint tui
# Force ASCII borders
XINT_TUI_ASCII=1 xint tui
# Optional theme token file
XINT_TUI_THEME_FILE=./tui-theme.tokens.example.json xint tuiSet a local bearer token in your shell or secret manager (do not commit credentials):
X_BEARER_TOKEN
Get your bearer token from developer.x.com → Your Apps → App Settings.
For analyze, report --sentiment, and article --ai:
XAI_API_KEY
For bookmarks, likes, lists, blocks/mutes, and follower tracking:
X_CLIENT_ID
Run xint auth setup to complete OAuth flow.
- Run everything locally from this repo.
- Package API calls are local unless you set cloud endpoints.
- Good for development and private workflows.
- Point package API features at your hosted control plane:
XINT_PACKAGE_API_BASE_URL=http://localhost:8787/v1(or your deployed URL)XINT_PACKAGE_API_KEY=<workspace_api_key>XINT_WORKSPACE_ID=<workspace_id>
- Optional billing upgrade link shown on quota/plan errors:
XINT_BILLING_UPGRADE_URL=https://your-app/pricing
Notes:
- If
XINT_PACKAGE_API_BASE_URLis unset, package API MCP tools return a setup error. xint-cloudshould remain private;xintandxint-rsstay public OSS clients.
xint now ships a machine-readable manifest for agent runtime allowlists and tool routing:
# Pretty JSON
xint capabilities
# Compact JSON for machine ingestion
xint capabilities --compact# Quick pulse
xint search "AI agents" --quick
# High-engagement from last hour
xint search "react 19" --since 1h --sort likes --min-likes 50
# Full-archive deep dive
xint search "bitcoin ETF" --full --pages 3
# With sentiment
xint search "solana" --sentiment
# Export
xint search "startups" --csv > data.csv
xint search "AI" --jsonl | jq '.text'| Flag | Description |
|---|---|
--sort |
likes · impressions · retweets · recent |
--since |
1h · 3h · 12h · 1d · 7d |
--full |
Search full archive (back to 2006) |
--min-likes N |
Filter by engagement |
--pages N |
Pages to fetch (1-5) |
--sentiment |
Add AI sentiment per tweet |
--quick |
Fast mode with caching |
# Monitor topic every 5 minutes
xint watch "solana" --interval 5m
# Watch user
xint watch "@vitalikbuterin" -i 1m
# Webhook to Slack
xint watch "breaking" -i 30s --webhook https://example.com/webhookWebhook safety:
- Remote webhooks must use
https:// http://is accepted only for localhost/loopback targets- Optional host allowlist:
XINT_WEBHOOK_ALLOWED_HOSTS=hooks.example.com,*.internal.example
Press Ctrl+C — shows session stats.
# List current stream rules
xint stream-rules
# Add a filtered-stream rule
xint stream-rules add "from:elonmusk -is:retweet" --tag elon
# Connect to stream
xint stream
# JSONL output + stop after 25 events
xint stream --jsonl --max-events 25# First run: creates snapshot
xint diff @vitalikbuterin
# Second run: shows changes
xint diff @vitalikbuterin
# Track following
xint diff @username --followingRequires OAuth (xint auth setup).
# List your owned lists
xint lists
# Create a private list
xint lists create "AI Researchers" --description "High-signal accounts" --private
# Add/remove members
xint lists members add <list_id> @username
xint lists members remove <list_id> @username# List blocked/muted users
xint blocks
xint mutes
# Add/remove
xint blocks add @username
xint blocks remove @username
xint mutes add @username
xint mutes remove @usernamexint follow @username
xint unfollow @username# Download media from a tweet ID
xint media 1900100012345678901
# Download media from a tweet URL
xint media https://x.com/user/status/1900100012345678901
# Custom output directory + JSON summary
xint media 1900100012345678901 --dir ./downloads --json
# Download only first video/gif
xint media 1900100012345678901 --video-only --max-items 1
# Download only photos
xint media 1900100012345678901 --photos-only
# Custom filename template
xint media 1900100012345678901 --name-template "{username}-{created_at}-{index}"# Generate report
xint report "AI agents" --save
# With sentiment + specific accounts
xint report "crypto" --sentiment --accounts @aaboronkov,@solanaReports include: summary, sentiment breakdown, top tweets, account activity.
# Fetch article
xint article "https://example.com"
# Fetch + AI summary
xint article "https://example.com" --ai "Key takeaways?"
# From X tweet
xint article "https://x.com/user/status/123" --ai "Summarize"Uses xAI's grok-4 model.
Designed for AI coding agents. Add as a skill:
# Claude Code
mkdir -p .claude/skills && cd .claude/skills
git clone https://github.com/0xNyk/xint.git
# OpenClaw
mkdir -p skills && cd skills
git clone https://github.com/0xNyk/xint.gitThen just ask: "Search X for what people say about React 19" — the agent reads SKILL.md and runs the right command.
xint mcpRuns an MCP server AI agents can connect to.
# HTTP/SSE mode (local-only by default)
xint mcp --sse --port=3000
# Optional: require bearer auth (recommended if binding beyond loopback)
XINT_MCP_AUTH_TOKEN=replace-with-long-random-token xint mcp --sse --host=127.0.0.1Security defaults:
- SSE mode binds to
127.0.0.1unless--host/XINT_MCP_HOSTis set. - If host is non-loopback, auth is required via
--auth-tokenorXINT_MCP_AUTH_TOKEN.
| Operation | Cost |
|---|---|
| Tweet read | $0.005/tweet |
| Full-archive | $0.01/tweet |
| Write action | $0.01/action |
xint costs # Today's spend
xint costs week # Last 7 days
xint costs budget # Show/set limits# Show workspace plan, limits, and feature gates
xint billing status
# Show usage units by operation over a window
xint billing usage --days=30These commands read from the local/hosted package API (XINT_PACKAGE_API_BASE_URL).
For hosted billing sync, package API also supports:
POST /v1/billing/webhook(provider-agnostic event ingest)GET /v1/billing/events?limit=100(workspace billing event history)
| Variable | Required | Description |
|---|---|---|
X_BEARER_TOKEN |
Yes | X API v2 bearer token |
XAI_API_KEY |
No | xAI key for analyze/report |
XINT_ARTICLE_TIMEOUT_SEC |
No | Article fetch timeout seconds (default 30, range 5-120) |
X_CLIENT_ID |
No | OAuth for bookmarks/likes/lists/blocks/mutes |
XINT_PACKAGE_API_BASE_URL |
No | Package API base URL for MCP package tools/billing |
XINT_PACKAGE_API_KEY |
No | Legacy single bearer key for package API auth |
XINT_PACKAGE_API_KEYS |
No | JSON map of API keys to workspace_id + plan |
XINT_PACKAGE_API_PLAN |
No | Default workspace plan (free|pro|team|enterprise) |
XINT_WORKSPACE_ID |
No | Workspace id used by local xint billing * calls |
XINT_BILLING_WEBHOOK_SECRET |
No | HMAC secret for /v1/billing/webhook signature validation |
XINT_BILLING_UPGRADE_URL |
No | Upgrade URL shown in MCP plan/quota errors |
xint/
├── xint.ts # CLI entry
├── lib/ # Core modules
│ ├── api.ts # X API wrapper
│ ├── oauth.ts # OAuth 2.0 PKCE
│ ├── grok.ts # xAI integration
│ ├── sentiment.ts # AI sentiment
│ ├── watch.ts # Real-time monitoring
│ └── format.ts # Output formatters
├── data/
│ ├── cache/ # Search cache (15min TTL)
│ ├── exports/ # Saved results
│ └── snapshots/ # Follower snapshots
├── SKILL.md # AI agent instructions
└── .env.example # Template
- Tokens from env vars — never hardcoded
- OAuth tokens stored with
chmod 600 - Webhooks: use trusted endpoints only
- Review agent session logs in untrusted environments
See SECURITY.md for full details.
Open source! See CONTRIBUTING.md.
xint is the source of truth for release automation across xint and xint-rs.
# from xint/
./scripts/release.sh --dry-run --allow-dirty
./scripts/release.sh 2026.2.18.4 --allow-dirty
# disable default ClawdHub publish for one run
./scripts/release.sh 2026.2.18.4 --no-clawdhub
# enable skills.sh as well
./scripts/release.sh 2026.2.18.4 --skillsh
# disable GitHub auto-generated notes if you want manual sections only
./scripts/release.sh 2026.2.18.4 --no-auto-notes
# write release report to a custom location
./scripts/release.sh 2026.2.18.4 --report-dir /tmp/xint-release-reportsOptional path overrides:
REPO_PATH_XINT(defaults to current repo when running insidexint)REPO_PATH_XINT_RS(defaults to sibling../xint-rswhen present)RELEASE_REPORT_DIR(defaults toxint/reports/releases)
Notes behavior:
- Default: uses
gh release create --generate-notes - Manual override: set any of
CHANGELOG_ADDED,CHANGELOG_CHANGED,CHANGELOG_FIXED,CHANGELOG_SECURITY - Default: publishes to ClawdHub when
clawdhubCLI is available (disable with--no-clawdhub) - Optional: publish to skills.sh with
--skillsh(or--ai-skillfor both)
Release report:
- Default: writes
reports/releases/<version>.md - Contains per-repo commit list, commit range, file changes, SHAs, compare links, and release URLs
- Uploaded automatically to both GitHub releases as an asset (can disable with
--no-report-asset) - Embedded automatically in both GitHub release bodies (can disable with
--no-report-body) - Disable with
--no-report
