VT.ai - Minimal multimodal AI chat app with dynamic conversation routing
Project description
VT.ai
VT.ai is an open-source multimodal AI chat application with dynamic conversation routing. Supports multiple LLM providers with semantic-based routing and comprehensive multimodal capabilities.
Installation
Native Installer (Recommended)
- Automatic Python 3.11 setup
- Installs
uvpackage manager (faster than pip) - Creates isolated virtual environment
- Installs all dependencies including Chainlit
- Interactive API key configuration
- Auto-launches VT.ai after installation
Linux & macOS:
curl -fsSL https://raw.githubusercontent.com/vinhnx/VT.ai/main/scripts/install_and_run.sh | bash
# Or skip API key configuration
curl -fsSL https://raw.githubusercontent.com/vinhnx/VT.ai/main/scripts/install_and_run.sh | bash -s -- --no-api-config
Windows (PowerShell):
git clone https://github.com/vinhnx/VT.ai.git
cd VT.ai
.\scripts\install_and_run.bat
Alternative Installation Methods:
# PyPI (standard installation)
pip install vtai
# With uv (faster)
uv pip install vtai
# Try without installing
uvx --python 3.11 vtai
See Installation Guide and Security Notice for more options and troubleshooting.
Usage
# Set your API key
export OPENAI_API_KEY="sk-..."
# Launch VT.ai
vtai
The application will open in your default browser at http://localhost:8000.
Command-Line Usage
# Start the application
vtai
# Show version
vtai --version
# Show help
vtai --help
# Configure API keys
vtai --api-key openai=sk-...
Supported Providers: openai, anthropic, gemini, deepseek, ollama
Capabilities
Multimodal Support
VT.ai provides comprehensive multimodal capabilities:
- Text Chat: Natural conversations with multiple AI models
- Image Generation: Create images with DALL-E 3 and GPT-Image-1
- Visual Analysis: Upload and analyze images with vision models
- Voice Interaction: Speech-to-text and text-to-speech with configurable voices
- Web Search: Real-time information retrieval with Tavily API
- Reasoning Visualization: Step-by-step thinking with
<think>tag
Semantic Routing
VT.ai uses vector-based semantic routing to automatically direct queries to the most appropriate model:
- Fast Classification: Uses FastEmbed embeddings for instant routing decisions
- No Manual Selection: Automatic model selection based on query intent
- Optimized Performance: Reduces latency by avoiding unnecessary LLM calls
- Custom Routes: Extensible routing system for specialized use cases
For more information about capabilities, see Usage Guide.
Supported Providers
VT.ai works with OpenAI, Anthropic, Google Gemini, DeepSeek, Cohere, Ollama (local), and more. Set the corresponding environment variable for your provider:
export OPENAI_API_KEY="sk-..." # OpenAI (GPT-o1, GPT-o3, GPT-4o)
export ANTHROPIC_API_KEY="sk-ant-..." # Anthropic (Claude 3.5/3.7)
export GEMINI_API_KEY="..." # Google (Gemini 2.0/2.5)
export DEEPSEEK_API_KEY="..." # DeepSeek models
See Provider Configuration for complete setup instructions.
Configuration
VT.ai supports flexible configuration options:
API Key Management:
- Environment Variables: Session-only configuration
- Command-Line:
vtai --api-key provider=key - Persistent Storage: Securely stored in
~/.config/vtai/.env
Model Selection:
- Automatic routing based on query semantics
- Manual override via conversation profiles
- Custom model aliases in configuration
For full configuration options, see Configuration Guide.
Key Features
- Multi-Provider Integration: Unified access to models from OpenAI, Anthropic, Google, DeepSeek, and local models via Ollama
- Semantic Routing System: Vector-based classification using FastEmbed embeddings for automatic model selection
- Multimodal Capabilities: Text, image, and audio inputs with advanced vision analysis
- Image Generation: GPT-Image-1 integration with transparent backgrounds, multiple formats, and quality parameters
- Web Search Integration: Real-time information retrieval with source attribution via Tavily API
- Voice Processing: Advanced speech-to-text and text-to-speech with configurable voice options
- Reasoning Visualization: Step-by-step model reasoning with
<think>tag for transparent decision processes - Security First: All dependencies regularly updated with automated vulnerability scanning
Security & Safety
VT.ai implements a security-first approach to protect users and their data:
Dependency Security:
- Automated Scanning: Dependabot integration for vulnerability detection
- Regular Updates: All dependencies kept at latest secure versions
- Override Dependencies: Force secure versions for transitive dependencies
- Version Pinning: Critical dependencies pinned to known-safe versions
Data Protection:
- Local Storage: API keys stored locally in
~/.config/vtai/.env - No Data Collection: No telemetry or data collection by default
- Secure Defaults: Conservative security settings out of the box
- Workspace Isolation: All operations confined to workspace boundaries
Latest Security Release (v0.7.5):
- Fixed 25 vulnerabilities in dependencies
- Updated aiohttp, cryptography, mcp, PyJWT, black, onnx, and pillow
- Added uv override-dependencies for transitive security fixes
See Security Information for complete details.
Docs & Examples
- Getting Started
- Security Information
- Usage Guide
- Provider Guides
- Developer Guide
- API Reference
- Troubleshooting
Command-Line Reference
# Basic usage
vtai
# Show version
vtai --version
# Show help
vtai --help
# Configure API keys
vtai --api-key <provider>=<key>
# Supported providers
vtai --api-key openai=sk-...
vtai --api-key anthropic=sk-ant-...
vtai --api-key gemini=...
Environment Variables:
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export GEMINI_API_KEY="..."
vtai
Supported Models
| Category | Models |
|---|---|
| Chat | GPT-o1, GPT-o3 Mini, GPT-4o, Claude 3.5/3.7, Gemini 2.0/2.5 |
| Vision | GPT-4o, Gemini 1.5 Pro/Flash, Claude 3, Llama3.2 Vision |
| Image Gen | GPT-Image-1 with custom parameters |
| TTS | GPT-4o mini TTS, TTS-1, TTS-1-HD |
| Local | Llama3, Mistral, DeepSeek R1 (1.5B to 70B via Ollama) |
See Models Documentation for detailed model capabilities and configuration.
Technical Architecture
VT.ai leverages several open-source projects:
- Chainlit: Modern chat interface framework
- LiteLLM: Unified model abstraction layer
- SemanticRouter: Intent classification system
- FastEmbed: Efficient embedding generation
- Tavily: Web search capabilities
Architecture Components:
- Entry Point:
vtai/app.py- Main application logic - Routing Layer:
vtai/router/- Semantic classification system - Assistants:
vtai/assistants/- Specialized handlers - Tools:
vtai/tools/- Web search, file operations, integrations
See Architecture Documentation for details.
Contributing
I warmly welcome contributions of all kinds! Whether you're looking to fix bugs, add new features, improve documentation, or enhance the user experience, your help is greatly appreciated.
How To Contribute:
- Report issues you're experiencing
- Suggest new features or improvements
- Help answer questions in the issue tracker
- Improve documentation or add examples
If you're not sure where to start:
- Check out the issues page
- Look for good first issue labeled items
- Feel free to browse all open issues and pick one that resonates with you!
Steps to get started:
- Fork the repository by clicking the Fork button in the top-right corner
- Clone your forked repository to your local machine
- Create a new branch for your changes
- Start contributing!
When reporting an issue, please include enough details for others to reproduce the problem effectively.
See CONTRIBUTING.md for detailed guidelines.
Development
Type Checking
This project uses ty for static type checking. ty is a fast type checker developed by Astral (the creators of ruff and uv).
# Run type checking
./scripts/type-check.sh
# Or directly with uv
uv run ty check vtai
Why ty?
- Extremely fast type checking (10-100x faster than mypy)
- Zero configuration needed
- Works seamlessly with ruff for linting
- Native uv integration
Recent Releases
v0.7.8 (April 2, 2026) - CLI Enhancement
New command-line interface with instant version and help flags.
- Added dedicated
vtai.climodule for command-line interface --version/-vflag shows version without loading the full app (instant response)--help/-hflag displays usage information (instant response)- Improved CLI entry point separation for faster startup
- Refactored
vtai.appto extractrun_app()function
v0.7.5 (April 2, 2026) - Security Release
Critical security update addressing 25 vulnerabilities in dependencies.
- Fixed high-severity CVEs in aiohttp, cryptography, mcp, PyJWT, black, onnx, and pillow
- Added uv override-dependencies for transitive security fixes
- Pinned Python version to 3.11.x for stable dependency resolution
v0.7.4
- Optimized URL extraction and async file handling
- Enhanced router training capabilities
- Improved LLM provider configuration
Star History
License
VT.ai is available under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vtai-0.7.9.tar.gz.
File metadata
- Download URL: vtai-0.7.9.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09a138de4c561bfd781cdcb553b43c552f5b02163ca4c0b0aa7db2217934a2df
|
|
| MD5 |
db33e0ef5b29cd1bb928ec049a991f22
|
|
| BLAKE2b-256 |
5aef60c130d3cd327e6ead0611ff7fd86a6c6b8861da18fe7d9ec427483016a2
|
File details
Details for the file vtai-0.7.9-py3-none-any.whl.
File metadata
- Download URL: vtai-0.7.9-py3-none-any.whl
- Upload date:
- Size: 385.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9abb945ec69141a23baa40db5ad3e0fad2245449c5c4311cb7ea09169bf9bd93
|
|
| MD5 |
8b448e2ffcf5b534b6e9d0aeded5d4bb
|
|
| BLAKE2b-256 |
4b668c1acd7655cb4b1adfa7f3233b0e8bca2b83b42cd1d97e7f28af9c610a43
|