VT.ai

An open-source multimodal AI chat app that semantically routes each query to the most suitable model, with unified access to multiple LLM providers.

Source repo
vinhnx/VT.ai
Stars
★ 116
Last updated
15d ago
License
MIT
Primary language
Python

At a glance

How it runs
CLISelf-hosted service
Works with
Universal · cross-platformOpenAI API · Claude API
Cost
Free software; you pay for model usage
Setup effort
Low · running in minutes
You'll need
Python 3.11uv package managerAPI key for at least one provider (OpenAI, Anthropic, Gemini, DeepSeek, or Ollama)Shell / CLINetwork accessLocal filesystem
Typical use
Individual developers who want a one-command local chat UI to compare outputs across GPT-4o, Claude, Gemini, and local Ollama models
Not a fit if
  • Users who want a hosted service with zero self-hosting
  • Teams unwilling to supply any provider API key or run local models via Ollama
Source review
60/100 · Some gaps

What does this agent do, and when should you use it?

VT.ai (GitHub repository vinhnx/VT.ai, MIT licensed) is an open-source multimodal AI chat application whose centerpiece is vector-based semantic routing that automatically selects the right model based on query intent. It connects to OpenAI, Anthropic, Google Gemini, DeepSeek, Cohere, and local Ollama/llmman models through a LiteLLM abstraction layer, with a browser chat interface built on Chainlit (default http://localhost:8000). Capabilities span text chat, image generation with DALL-E 3 and GPT-Image-1, visual analysis, speech-to-text and text-to-speech, real-time web search via Tavily, and reasoning visualization via <think> tags. Installation options include a one-click installer script, a PyPI package (pip install vtai), or running directly with uvx; the entry point is the vtai command. The project takes a security-first stance — release v0.7.5 fixed 25 dependency vulnerabilities, and v0.7.8 added a dedicated CLI module.

VT.ai reads text, image, voice, and web-search requests entered in its browser chat interface, first classifies each query semantically using FastEmbed embeddings (routing layer in vtai/router/), and directs it to the most appropriate model. It then calls models through LiteLLM: OpenAI (GPT-o1, GPT-o3, GPT-4o), Anthropic (Claude 3.5/3.7), Gemini 2.0/2.5, DeepSeek, or local Ollama/llmman models (Llama3, Mistral, DeepSeek R1, and more). Image generation goes through GPT-Image-1 (with transparent backgrounds, multiple formats, and quality parameters), voice processing uses GPT-4o mini TTS, TTS-1, and TTS-1-HD, and web search calls the Tavily API with source attribution. Specialized handlers live in vtai/assistants/, tools (search, file operations, integrations) in vtai/tools/, and the main entry point is vtai/app.py. API keys can be set via environment variables, the vtai --api-key provider=key flag, or persisted in ~/.config/vtai/.env.

  1. Individual developers who want a one-command local chat UI to compare outputs across GPT-4o, Claude, Gemini, and local Ollama models
  2. Creators who need image generation, using GPT-Image-1 with transparent backgrounds and multiple format/quality parameters
  3. Conversational users who want to skip manual model selection, letting semantic routing assign models by query intent to cut latency
  4. Researchers who need live information with citations via the Tavily web search integration
  5. Users who prefer voice interaction, with configurable speech-to-text and text-to-speech voices
  6. Security-conscious teams that value Dependabot scanning, version pinning, and uv override-dependencies practices

How do you install or deploy this agent?

The recommended path is the official installer script, which sets up Python 3.11, installs the uv package manager, creates an isolated virtual environment, and configures API keys interactively.

Linux/macOS:

curl -fsSL https://raw.githubusercontent.com/vinhnx/VT.ai/main/scripts/install_and_run.sh | bash

Windows (PowerShell):

git clone https://github.com/vinhnx/VT.ai.git
cd VT.ai
.\scripts\install_and_run.bat

Alternative methods:

pip install vtai

or with uv:

uv pip install vtai

or try without installing:

uvx --python 3.11 vtai

How do you use this agent?

Set at least one provider's API key, then run vtai; the app opens in your default browser at http://localhost:8000.

export OPENAI_API_KEY="sk-..."
vtai

Keys for other providers:

export ANTHROPIC_API_KEY="sk-ant-..."
export GEMINI_API_KEY="..."
export DEEPSEEK_API_KEY="..."
export OLLAMA_API_BASE="http://localhost:17434"

Command-line options:

vtai --version
vtai --help
vtai --api-key openai=sk-...

API keys can also be persisted in ~/.config/vtai/.env; model selection is automatic via semantic routing by default, with manual override through conversation profiles.

What are this agent's strengths and limitations?

Pros
  • Unified multi-provider access: one interface reaches OpenAI, Anthropic, Gemini, DeepSeek, and local Ollama models via LiteLLM
  • FastEmbed-based vector semantic routing picks models automatically, removing manual selection and reducing latency
  • Comprehensive multimodality: text, vision analysis, image generation (GPT-Image-1), two-way voice, and Tavily web search
  • Strong security practices: Dependabot automated scanning, version pinning, and 25 dependency vulnerabilities fixed in v0.7.5
  • No telemetry or data collection by default; API keys stay local
Limitations
  • Core features depend on paid external LLM provider APIs, so you manage multiple provider keys and usage costs yourself
  • Local models require separately installing and running an Ollama or llmman service
  • Python is pinned to 3.11.x, imposing an explicit runtime version requirement
  • The Chainlit-based chat app is self-hosted, so you deploy and maintain the server yourself

How does this agent compare with similar options?

The README positions VT.ai as a multi-model chat app built on Chainlit (chat UI framework), LiteLLM (model abstraction layer), and SemanticRouter (intent classification); it can be seen as a batteries-included alternative to assembling those components yourself. No other named competitors appear in the documentation.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
VT.ai This agent 60 · Some gaps CLIFree + model costs ★ 116 15d ago Python OpenAI API · Claude API
Open WebUI Tools Collection 48 · Major gaps Self-hosted serviceFree + model costs ★ 832 5d ago Python —
Locally Uncensored 64 · Some gaps Desktop appFreemium ★ 3.3k 8d ago TypeScript OpenAI API · Claude API
AgentLego Multimodal Tools 40 · Major gaps Library / SDKFree ★ 416 2y ago Python —

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Some gaps
60/ 100 5-point scale 3.0 / 5
Trust 17/29
Reliability 8/14
Adaptability 10/18
Convention 13/18
Effectiveness 9/13
Verifiability 3/8
Why each dimension lost points
Trust17 / 29 · 2.9/5

Dependency security is genuinely strong: extensive uv override-dependencies, CVE-motivated pins, and a thorough litellm supply-chain incident audit with safe-version pinning justify full marks. Deductions: claimed 'workspace isolation', 'no data collection', and 'secure defaults' have no supporting source in the evidence set (vtai/ source not provided); API keys are stored plaintext in ~/.config/vtai/.env yet described as 'securely stored'; no evidence of user confirmation for external effects (web search, image generation, TTS billing); no rollback guidance.

Reliability8 / 14 · 2.9/5

Dependency availability is adequate: pinned versions, multiple install paths, override strategy. Self-consistency is penalized heavily: version numbers conflict across files (README claims v0.7.8 as latest, security.md says 0.7.5, pyproject says 0.7.15); the pylint CI targets Python 3.8–3.10 while the project requires >=3.11,<3.12; tests/unit/test_config.py imports 'from utils.config' which does not match the vtai.utils.config package path, so the test likely cannot run; ruff target-version="0.7.11" is an invalid value.

Adaptability10 / 18 · 2.8/5

Environment fit is decent: Python 3.11 pinned, Linux/macOS/Windows covered, multiple install methods, plus a declared Rust implementation. Audience and scenarios are reasonably described (multi-provider, local Ollama). Deductions: capability boundaries are never stated (what operations are restricted, routing fallback behavior are absent); trigger precision rests on a described configurable threshold with no concrete evidence.

Convention13 / 18 · 3.6/5

Install notes are exceptionally thorough — full marks. MIT LICENSE file is complete. Deductions: configuration.md and troubleshooting.md self-declare 'under construction'; no known-limitations section; version/changelog entries contradict each other across files and the April 2026 dates and CVE IDs cannot be corroborated within the repository; maintenance is a single-maintainer project with limited evidence of sustained commitment.

Effectiveness9 / 13 · 3.5/5

Output usability has a foundation: chat UI, source URLs on search results, reasoning visualization, configurable TTS. Marginal value is real but derivative: core capability comes from the Chainlit/LiteLLM/SemanticRouter stack; VT.ai's contribution is routing and packaging. Cost-benefit offers local models and ephemeral uvx runs, but first-run embedding downloads and added routing complexity are not quantified.

Verifiability3 / 8 · 1.9/5

Deductions concentrate here: the README's many security/privacy claims ('25 vulnerabilities fixed', 'workspace isolation', 'no data collection') cannot be traced to verifiable code or artifacts in the evidence set; cross-source corroboration fails — versions, security-advisory content, and CI targets contradict each other; the vtai/ source itself is absent from the evidence, so behavioral descriptions cannot be checked against implementation; documentation mixes factual statements with marketing language ('Security First') without separation.

Risks and how to mitigate them
  • This is a static review based only on the provided files; the vtai/ core source is absent from the evidence set, and no behavioral or security claims were verified by execution.
  • Version numbers contradict each other across the repository (0.7.5 / 0.7.8 / 0.7.15), release dates are in 2026, and CVE IDs cannot be corroborated in-repo — verify against the actual PyPI package.
  • API keys are stored plaintext in ~/.config/vtai/.env; avoid using on shared hosts and rotate keys as needed.
  • The recommended install method is curl | bash of a remote script — a supply-chain risk; inspect the script before running.
  • The listed unit tests contain an incorrect import path and likely cannot run; the CI matrix (Python 3.8–3.10) conflicts with the project requirement (3.11), so quality gates may be ineffective.
  • Web search, image generation, and similar features call paid external APIs and send data outward with no evidence of user confirmation; use in a trusted environment.
Evidence confidence: Low Reviewed Oct 31, 2026 Reviewed revision c441650a81dd
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v0.7.13
    Release notes excerpt
    Patch release updating python-dotenv minimum version to 1.2.2 and refreshing the lockfile.
    View on GitHub ↗
  2. v0.7.12
    Release notes excerpt
    Patch release with code structure improvements and dependency updates
    View on GitHub ↗
  3. v0.7.7 v0.7.7 - Path Handling Fix
    Release notes excerpt
    Bug Fixes This release fixes a critical issue where VT.ai failed to import modules when the project path contained spaces or special characters (e.g., 'VT.ai' directory). Fixed Issues - Path Handling: Fixed ModuleNotFoundError when project path contains spaces - Use os.path.normpath() to properly handle paths with spaces and special characters - Fix import failures in directories like VT.ai or My Projects - Normalize path comparison when checking sys.path entries Technical Details - Chainlit loads app.py as a file, not as a module …
    View on GitHub ↗

FAQ

Does VT.ai cost anything to use?
The software itself is free and open source under the MIT license, but calling cloud models from OpenAI, Anthropic, Gemini, or DeepSeek requires your own API keys and per-use payments; local models via Ollama avoid cloud API costs.
Which model providers are supported?
OpenAI (GPT-o1, GPT-o3, GPT-4o), Anthropic (Claude 3.5/3.7), Google Gemini (2.0/2.5), DeepSeek, Cohere, plus local models via Ollama or llmman (Llama3, Mistral, DeepSeek R1, and more).
How are API keys stored, and is data collected?
API keys can be set via environment variables, the command line, or persisted locally in ~/.config/vtai/.env. There is no telemetry or data collection by default, and operations are confined to workspace boundaries.
Can it run fully offline?
Chat works offline via local models through Ollama (or llmman), but features like image generation (GPT-Image-1) and web search (Tavily) require cloud services.
How do I get the latest version?
The latest releases are v0.7.8 (instant --version/--help CLI flags) and v0.7.5 (25 dependency vulnerabilities fixed). Full release notes and upgrade instructions are on the GitHub Releases page.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents