A CLI for AI agents to access services without MCP context overhead.
- Zero context cost - MCP tools add ~500+ tokens each to context window
- Just needs skill.md - Works with Claude Code, OpenCode, Cursor, etc.
- Human-readable output - AI can parse and act on it
- No confirmation prompts - Designed for autonomous agents
- Consistent interface -
uni <service> <command>pattern across 25+ services
cd ~/projects/uni-cli
bun run build
./packages/cli/dist/uni listSee specs/STATUS.md for current status.
packages/
├── cli/ # Main CLI
├── shared/ # Shared types & utils
├── service-*/ # Service packages (25 builtin)
skill/
├── SKILL.md # AI agent skill file
├── REFERENCE.md # Auto-generated command reference
├── PATTERNS.md # Workflow patterns
specs/
├── STATUS.md # Project status
├── phase-*.md # Phase specs
registry/
└── plugins.json # Official plugin registry
# Build
bun run build
# Test a service
bun run packages/cli/src/main.ts exa search "test"
bun run packages/cli/src/main.ts gcal list
# Regenerate docs
bun run scripts/generate-docs.ts
# Use globally (if ~/.local/bin in PATH)
uni list
uni <service> --help
uni plugins install <name>
uni doctor- Create
packages/service-<name>/ - Copy structure from existing service
- Implement commands in
src/commands/ - Export service in
src/index.ts bun run build- Service auto-discovered
# Extract a core service to the plugins monorepo
bun scripts/plugin-move.ts extract <name>
# Then: cd ../uni-plugins && git add . && git commit && git push
# Absorb a plugin back into core
bun scripts/plugin-move.ts absorb <name>
# Then: bun run buildPlugins live in ../uni-plugins/packages/ (monorepo).
Registry at registry/plugins.json tracks official plugins.
# Google services (gcal, gmail, gdrive, etc.)
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET
# Other services
SLACK_BOT_TOKEN
NOTION_TOKEN
EXA_API_KEY # optional, MCP works without it