draht — Dynamic Routing for Agent & Task Handling
Draht is a modular AI coding agent framework built as a monorepo with a rich ecosystem of packages. It provides an interactive terminal-based coding assistant that supports multiple LLM providers and a powerful extension system.
Architecture
The framework follows a layered architecture:
@draht/coding-agent— The main CLI entry point, extension loader, and session management@draht/agent-core— Agent runtime with tool calling, message handling, and state management@draht/ai— Unified multi-provider LLM API supporting Anthropic, OpenAI, Google, AWS Bedrock, and local models@draht/tui— Custom terminal UI library with differential rendering for responsive, real-time streaming output
Key Features
- Extension System — Register custom tools, commands, providers, themes, skills, and prompt templates via a plugin API
- Skills — Task-specific instruction sets that can be triggered contextually (e.g., converting PRDs to task beads, generating JSON task files)
- Multi-Model Support — Seamlessly switch between Claude, GPT, Gemini, Bedrock, and locally hosted models
- Custom TUI — Built from scratch with Ink/React for real-time streaming, tool visualization, and interactive prompts
Additional Packages
@draht/web-ui— Web components for AI chat interfaces@draht/mom— Slack bot that delegates messages to the coding agent@draht/pods— CLI for managing vLLM deployments on GPU pods@draht/knowledge— RAG and knowledge base integrations
Tech Stack
Built entirely in TypeScript on Bun, with a monorepo managed via workspaces. The TUI uses a custom differential rendering engine. The AI layer abstracts provider-specific APIs behind a unified interface with streaming, tool calling, and structured output support.