A CLI chatbot built with EffectTS and Bun that provides AI conversation with web scraping capabilities.
- Interactive CLI chatbot using OpenRouter AI models
- Web search across Google, Bing, and Yandex
- Web page content extraction and conversion to markdown
- Task management and progress tracking
- Built with functional programming patterns
- Bun runtime
- OpenRouter API account
- BrightData account for web scraping
- Clone the repository
- Install dependencies:
bun install
- Set up environment variables:
Edit
cp .env.example .env
.envwith your API keys:OPENROUTER_API_KEY=your-openrouter-api-key BRIGHTDATA_API_KEY=your-brightdata-api-key BRIGHTDATA_UNLOCKER_ZONE=your-brightdata-zone
bun run devbun run build
bun run start| Command | Description |
|---|---|
bun run dev |
Run in development mode |
bun run build |
Build for production |
bun run start |
Run production build |
bun run lint |
Run linter |
bun run format |
Format code |
bun run typecheck |
Type check |
bun test |
Run tests |
The chatbot includes these tools:
Returns current date and time with customizable formatting options:
short: Localized format (e.g., "8/16/2025, 3:57:12 PM")long: Full format (e.g., "Friday, August 16, 2025 at 03:57:12 PM")iso: ISO 8601 format (e.g., "2025-08-16T20:57:12.345Z")
Manages task lists for tracking progress on multi-step work and project planning.
Searches the web using Google, Bing, or Yandex via BrightData proxy network.
Extracts content from web pages and converts to clean markdown format.
OPENROUTER_API_KEY- Your OpenRouter API keyBRIGHTDATA_API_KEY- Your BrightData API keyBRIGHTDATA_UNLOCKER_ZONE- Your BrightData zone identifier
- Create account at openrouter.ai
- Add credits to your account
- Generate API key from dashboard
- Add key to
.envfile
- Create account at brightdata.com
- Create an Unlocker zone
- Copy zone identifier and API key
- Add credentials to
.envfile
src/
├── index.ts # Application entry point
├── chat.ts # Chat functionality
├── client.ts # OpenRouter client configuration
├── tools.ts # AI tools implementation
├── types.ts # Data type definitions
├── stores.ts # State management
└── ui.ts # Console interface
MIT