A powerful AI coding agent orchestrator with a beautiful TUI interface.
- 🤖 Multi-agent orchestration using DeepAgents
- 🧠 Specialized subagents (Oracle, Librarian, Explore, etc.)
- 📚 Skills system for specialized workflows
- 🎨 Claude Code-like TUI interface
- 💬 Real-time streaming responses
- 📝 Code block highlighting
- ⌨️ Multi-line input support
- 🔄 Message history
- 🚀 Fast and responsive UI
bun run devThe API will start on http://localhost:3000
In a new terminal:
bun run tui:devvibes/
├── src/
│ ├── index.ts # Backend API entry point
│ ├── logger.ts # Logger configuration
│ ├── routers/
│ │ └── agent.ts # Agent API routes (streaming support)
│ └── vibes/
│ ├── index.ts # DeepAgents configuration
│ ├── subagents/
│ ├── tools/
│ └── middleware/
├── skills/ # Skills directory
│ └── example-skill/
│ └── SKILL.md
├── tui/ # TUI package (separate)
│ └── src/
│ ├── components/
│ │ ├── App.tsx
│ │ ├── Message.tsx
│ │ ├── MessageList.tsx
│ │ ├── Input.tsx
│ │ └── Header.tsx
│ └── lib/
│ └── formatter.ts
└── package.json
- Hono - Fast web framework
- DeepAgents - Multi-agent orchestration
- LangChain - AI agent framework
- AI SDK - Streaming protocol with langchain adapter
- Bun - JavaScript runtime
- Ink - React for CLIs
- React - UI library
- AI SDK -
useChathook for streaming - TypeScript - Type safety
Create a .env file in the root directory:
OPENROUTER_API_KEY=your_api_key_here
# or
OPENAI_API_KEY=your_api_key_here
PORT=3000
NODE_ENV=development
SKILLS_DIR=./skillsStreaming chat endpoint that integrates with DeepAgents orchestration.
Request:
{
"messages": [
{ "role": "user", "content": "Hello" }
]
}Response: Server-Sent Events (SSE) streaming format
Vibes supports the Anthropic Skills standard for modular, discoverable agent capabilities.
Following the Anthropic Skills specification:
skills/
└── skill-name/
├── SKILL.md # Required - Main skill file
├── scripts/ # Optional - Executable scripts
├── references/ # Optional - Documentation
└── assets/ # Optional - Templates, images
Skills use YAML frontmatter for metadata:
---
name: skill-name
description: What the skill does and when to use it
---
# Skill Title
Instructions for the agent when this skill is active.Required fields:
name- Skill identifier (must match folder name)description- What skill does and when to use it (for auto-discovery)
Best practices:
- Keep SKILL.md concise (under 500 lines)
- Move detailed info to
references/directory - Store reusable scripts in
scripts/directory - Use progressive disclosure - load only what's needed
See skills/example-skill/SKILL.md for a complete example following the Anthropic format.
The agent discovers skills automatically through their description field. Use activate_skill(name) to activate a skill when needed (e.g., "activate frontend" or "use frontend skill").
Ctrl+D- Submit messageCtrl+C- Exit TUICtrl+A- Move to start of lineCtrl+E- Move to end of line←/→- Move cursor left/rightBackspace/Delete- Delete character
MIT