NAME
xint — X Intelligence CLI — search, monitor, analyze, and engage on X/Twitter. TypeScript + Bun. AI agent skill. Using xAPI &…
SYNOPSIS
brew install xintINFO
DESCRIPTION
X Intelligence CLI — search, monitor, analyze, and engage on X/Twitter. TypeScript + Bun. AI agent skill. Using xAPI & xAI api keys
README
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.
Why xint?
- 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).
Install
curl -fsSL https://raw.githubusercontent.com/0xNyk/xint/main/install.sh | bash
Optional pinned version:
XINT_INSTALL_VERSION=<version-tag> \
curl -fsSL https://raw.githubusercontent.com/0xNyk/xint/main/install.sh | bash
Homebrew (lightweight prebuilt binary on Apple Silicon):
brew tap 0xNyk/xint
brew install xint
Rust variant explicitly:
brew install xint-rs
Manual source install:
git clone https://github.com/0xNyk/xint.git
cd xint
bun install
Requires: Bun · X API access (prepaid credits)
Quick Reference
| 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" |
| Reposts | xint reposts <tweet_id> |
| User Search | xint users "AI researcher" |
| Article | xint article <url> --ai "summarize" |
| Capabilities | xint capabilities --json |
| TUI | xint tui |
Shorthands
xint s "query" # search
xint w "query" # watch
xint p @user # profile
xint tr # trends
xint bm # bookmarks
TUI Customization
# Built-in themes: classic | neon | minimal | ocean | amber XINT_TUI_THEME=ocean xint tuiDisable 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
Setup
1. X API Key
Set 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.
2. Optional: xAI for AI Features
For analyze, report --sentiment, and article --ai:
XAI_API_KEY
3. Optional: OAuth for Write Access
For bookmarks, likes, lists, blocks/mutes, and follower tracking:
X_CLIENT_ID
Run xint auth setup to complete OAuth flow.
Deployment Modes
Self-hosted (OSS default)
- Run everything locally from this repo.
- Package API calls are local unless you set cloud endpoints.
- Good for development and private workflows.
Hosted cloud control plane (xint-cloud)
- 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.
Agent-Native Capabilities Manifest
xint now ships a machine-readable manifest for agent runtime allowlists and tool routing:
# Pretty JSON xint capabilitiesCompact JSON for machine ingestion
xint capabilities --compact
Search
# Quick pulse xint search "AI agents" --quickHigh-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'
Options
| 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 |
Watch (Real-Time)
# Monitor topic every 5 minutes xint watch "solana" --interval 5mWatch user
xint watch "@vitalikbuterin" -i 1m
Webhook to Slack
xint watch "breaking" -i 30s --webhook https://example.com/webhook
Webhook 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.
Stream (Official Filtered Stream)
# List current stream rules xint stream-rulesAdd 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
Follower Tracking
# First run: creates snapshot xint diff @vitalikbuterinSecond run: shows changes
xint diff @vitalikbuterin
Track following
xint diff @username --following
Requires OAuth (xint auth setup).
Lists (OAuth)
# List your owned lists xint listsCreate 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
Blocks & Mutes (OAuth)
# List blocked/muted users xint blocks xint mutesAdd/remove
xint blocks add @username xint blocks remove @username xint mutes add @username xint mutes remove @username
Follow Actions (OAuth)
xint follow @username
xint unfollow @username
Media Download
# Download media from a tweet ID xint media 1900100012345678901Download 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}"
Reposts
# See who reposted a tweet
xint reposts <tweet_id>
xint reposts <tweet_id> --limit 50 --json
User Search
# Find users by keyword
xint users "AI researcher"
xint users "solana dev" --limit 10 --json
Intelligence Reports
# Generate report xint report "AI agents" --saveWith sentiment + specific accounts
xint report "crypto" --sentiment --accounts @aaboronkov,@solana
Reports include: summary, sentiment breakdown, top tweets, account activity.
Article Analysis
# 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. Default analysis model is now grok-4-1-fast.
Use as AI Agent Skill
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.gitOpenClaw
mkdir -p skills && cd skills git clone https://github.com/0xNyk/xint.git
Then just ask: "Search X for what people say about React 19" — the agent reads SKILL.md and runs the right command.
MCP Server
xint mcp
Runs an MCP server AI agents can connect to.
# HTTP/SSE mode (local-only by default) xint mcp --sse --port=3000Optional: require bearer auth (recommended if binding beyond loopback)
XINT_MCP_AUTH_TOKEN=replace-with-long-random-token xint mcp --sse --host=127.0.0.1
Security 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.
Cost
| 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
Package API Billing
# Show workspace plan, limits, and feature gates xint billing statusShow usage units by operation over a window
xint billing usage --days=30
These 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)
Configuration Variables (Local Only)
| 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 |
File Structure
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
Security
- 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.
Contributing
Open source! See CONTRIBUTING.md.
Release Automation
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-reports
Optional 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
Contributing
Contributions welcome. Read the contribution guidelines first.
❤️ Support the Project
If you find this project useful, consider supporting my open-source work.
Solana donations
BYLu8XD8hGDUtdRBWpGWu5HKoiPrWqCxYFSh4oxXuvPg
Need agent infrastructure, trading systems, or Solana applications built for your team?
Builderz ships production AI systems — 32+ products across 15 countries.
License
To the extent possible under law, the authors have waived all copyright and related or neighboring rights to this work.
