ChatOllama is an open-source AI chatbot that brings cutting-edge language models to your fingertips while keeping your data private and secure.
3,509
stars
885
commits
TypeScript
primary language
Sep 6, 2026
updated
English | 简体中文
🔐 New ACL Feature (2025-08-25): Access Control Lists (ACL) for MCP server management! Control who can configure MCP servers with
ACL_ENABLEDenvironment variable. Learn more about ACL configuration →
🤖 Deep Agents Support (2025-08-19): ChatOllama now supports AI Agents with tool access! Currently requires Anthropic API key. Please refer to
.env.exampleand setANTHROPIC_API_KEYin.env. Tools are configured through MCP settings. Visit/agentsto get started.
📢 Database Migration Notice (2025-08-14): ChatOllama has moved from SQLite to PostgreSQL as the primary database provider for better performance and scalability.
ChatOllama is an open source chatbot platform built with Nuxt 3, supporting a wide range of language models and advanced features including knowledge bases, realtime voice chat, and Model Context Protocol (MCP) integration.
Choose your preferred deployment method:
The easiest way to get started. Download docker-compose.yaml and run:
docker compose up
Access ChatOllama at http://localhost:3000
For development or customization:
Prerequisites
Installation
git clone git@github.com:sugarforever/chat-ollama.git
cd chat-ollama
cp .env.example .env
pnpm install
Database Setup
.envpnpm prisma migrate deployStart Development
pnpm dev
If you're upgrading from a previous version that used SQLite, follow these steps to migrate your data:
No action required! Docker deployments handle the migration automatically:
Backup your existing SQLite data (if you have important chat history):
cp chatollama.sqlite chatollama.sqlite.backup
Install and setup PostgreSQL:
# macOS with Homebrew
brew install postgresql
brew services start postgresql
# Create database and user
psql postgres
CREATE DATABASE chatollama;
CREATE USER chatollama WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE chatollama TO chatollama;
\q
Update your .env file:
# Replace SQLite URL with PostgreSQL
DATABASE_URL="postgresql://chatollama:your_password@localhost:5432/chatollama"
Run database migrations:
pnpm prisma migrate deploy
Migrate existing SQLite data (if you have chat history to preserve):
pnpm migrate:sqlite-to-postgres
ChatOllama supports two vector databases. Configure in your .env file:
# Choose: chroma or milvus
VECTOR_STORE=chroma
CHROMADB_URL=http://localhost:8000
MILVUS_URL=http://localhost:19530
ChromaDB Setup (Default)
docker run -d -p 8000:8000 chromadb/chroma
Key configuration options in .env:
# Access Control
ACL_ENABLED=false # Set to 'true' for production (admin-only MCP management)
# Database
DATABASE_URL=file:../../chatollama.sqlite
# Server
PORT=3000
HOST=
# Vector Database
VECTOR_STORE=chroma
CHROMADB_URL=http://localhost:8000
# Optional: API Keys for commercial models
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GOOGLE_API_KEY=your_gemini_key
GROQ_API_KEY=your_groq_key
MOONSHOT_API_KEY=your_moonshot_key
# Optional: Proxy settings
NUXT_PUBLIC_MODEL_PROXY_ENABLED=false
NUXT_MODEL_PROXY_URL=http://127.0.0.1:1080
# Optional: Cohere for reranking
COHERE_API_KEY=your_cohere_key
You can enable or disable major product areas via feature flags. These can be set at build time using .env, or at runtime in Docker using NUXT_-prefixed variables.
Available features
Settings → MCP module. Flag: mcpEnabledknowledgeBaseEnabled/realtime voice chat page. Flag: realtimeChatEnabledModels menu and /models page. Flag: modelsManagementEnabledDocker (recommended for deployments)
Set runtime overrides with NUXT_ variables in docker-compose.yaml:
services:
chatollama:
environment:
- NUXT_MCP_ENABLED=true
- NUXT_KNOWLEDGE_BASE_ENABLED=true
- NUXT_REALTIME_CHAT_ENABLED=true
- NUXT_MODELS_MANAGEMENT_ENABLED=true
.env (build time during pnpm build)
If you are building locally (non-Docker) or creating a custom image, you can set:
MCP_ENABLED=true
KNOWLEDGE_BASE_ENABLED=true
REALTIME_CHAT_ENABLED=true
MODELS_MANAGEMENT_ENABLED=true
Note: These are evaluated when nuxt.config.ts is built. For prebuilt Docker images, prefer the NUXT_ variables above to override at runtime.
Notes
NUXT_ variables map directly to runtimeConfig keys at runtime and take precedence in containers.MCP_ENABLED=true in Compose will not override a prebuilt image’s runtimeConfig; use NUXT_MCP_ENABLED=true instead.ChatOllama integrates with MCP to extend AI capabilities through external tools and data sources. MCP servers are managed through a user-friendly interface in Settings.
ChatOllama provides flexible access control for MCP server management to support both development and production environments.
Permission Modes:
ACL_ENABLED=false (default): Open access - all users can manage MCP serversACL_ENABLED=true: Restricted access - only admin/superadmin users can manage MCP servers🔧 Development & Personal Use (Recommended: ACL_ENABLED=false)
# .env file
ACL_ENABLED=false
User Experience by Role:
| User Type | ACL_ENABLED=false | ACL_ENABLED=true |
|---|---|---|
| Unauthenticated | ✅ Full MCP access | ❌ Admin required |
| Regular User | ✅ Full MCP access | ❌ Admin required |
| Admin | ✅ Full MCP access | ✅ Full MCP access |
| Super Admin | ✅ Full MCP access | ✅ Full MCP access |
Important Notes:
ACL_ENABLED=trueSupported Transport Types:
Configuration via Settings UI:
STDIO Server Example:
Name: Filesystem Tools
Transport: stdio
Command: uvx
Args: mcp-server-filesystem
Environment Variables:
PATH: ${PATH}
Migration from Legacy Config:
If you have an existing .mcp-servers.json file:
pnpm exec ts-node scripts/migrate-mcp-servers.ts
Popular MCP Servers:
mcp-server-filesystem - File system operationsmcp-server-git - Git repository managementmcp-server-sqlite - SQLite database queriesmcp-server-brave-search - Web search capabilitiesHow MCP Works in Chat: When MCP servers are enabled, their tools become available to AI models during conversations. The AI can automatically call these tools to:
Tools are loaded dynamically and integrated seamlessly into the chat experience.
Common Issues and Solutions:
"Admin access required" message appears:
ACL_ENABLED=true and user lacks admin privileges# Option 1: Disable ACL (development)
ACL_ENABLED=false
# Option 2: Promote user to admin (contact super admin)
Cannot access MCP settings after enabling ACL:
# Set before first user signup
SUPER_ADMIN_NAME=admin-username
MCP tools not working in chat:
# Enable MCP feature
NUXT_MCP_ENABLED=true # Docker
MCP_ENABLED=true # .env
Permission changes not taking effect:
Before setting SUPER_ADMIN_NAME:
After setting SUPER_ADMIN_NAME:
.env file: SUPER_ADMIN_NAME=your-admin-usernameManaging existing users:
# Promote existing user to super admin
pnpm promote-super-admin username_or_email
# List current super admins
pnpm promote-super-admin --list
Super Admin Capabilities:
Admin Capabilities:
Regular User Capabilities:
# Recommended production settings
ACL_ENABLED=false # Default: open access to MCP management
SUPER_ADMIN_NAME=admin # Set super admin username
AUTH_SECRET=your-long-random-secret-key-here
Enable voice conversations with Gemini 2.0 Flash:
/realtime pageCreate searchable document repositories for enhanced conversations using RAG (Retrieval Augmented Generation):
KNOWLEDGE_BASE_ENABLED=true📖 Complete Configuration Guide →
Quick setup with Docker:
# All services included in docker-compose.yaml
docker compose up
Docker Deployment:
~/.chatollama/chatollama.sqliteDevelopment:
chatollama/
├── components/ # Vue components
├── pages/ # Nuxt pages (routing)
├── server/ # API routes and server logic
├── prisma/ # Database schema and migrations
├── locales/ # Internationalization files
├── config/ # Configuration files
└── docker-compose.yaml # Docker deployment
# Development
pnpm dev # Start development server
pnpm build # Build for production
pnpm preview # Preview production build
# Database
pnpm prisma-migrate # Run database migrations
pnpm prisma-generate # Generate Prisma client
pnpm prisma-push # Push schema changes
# User Management
pnpm promote-super-admin <username|email> # Promote user to super admin
pnpm promote-super-admin --list # List all super admins
pnpm install after each git pullpnpm prisma-migrate when schema changesJoin our Discord community for support, discussions, and updates:
TypeScript
72.3%
Vue
25.2%
SCSS
2.0%
ChatOllama is an open-source AI chatbot that brings cutting-edge language models to your fingertips while keeping your data private and secure.
3,509
stars
885
commits
TypeScript
primary language
Sep 6, 2026
updated
English | 简体中文
🔐 New ACL Feature (2025-08-25): Access Control Lists (ACL) for MCP server management! Control who can configure MCP servers with
ACL_ENABLEDenvironment variable. Learn more about ACL configuration →
🤖 Deep Agents Support (2025-08-19): ChatOllama now supports AI Agents with tool access! Currently requires Anthropic API key. Please refer to
.env.exampleand setANTHROPIC_API_KEYin.env. Tools are configured through MCP settings. Visit/agentsto get started.
📢 Database Migration Notice (2025-08-14): ChatOllama has moved from SQLite to PostgreSQL as the primary database provider for better performance and scalability.
ChatOllama is an open source chatbot platform built with Nuxt 3, supporting a wide range of language models and advanced features including knowledge bases, realtime voice chat, and Model Context Protocol (MCP) integration.
Choose your preferred deployment method:
The easiest way to get started. Download docker-compose.yaml and run:
docker compose up
Access ChatOllama at http://localhost:3000
For development or customization:
Prerequisites
Installation
git clone git@github.com:sugarforever/chat-ollama.git
cd chat-ollama
cp .env.example .env
pnpm install
Database Setup
.envpnpm prisma migrate deployStart Development
pnpm dev
If you're upgrading from a previous version that used SQLite, follow these steps to migrate your data:
No action required! Docker deployments handle the migration automatically:
Backup your existing SQLite data (if you have important chat history):
cp chatollama.sqlite chatollama.sqlite.backup
Install and setup PostgreSQL:
# macOS with Homebrew
brew install postgresql
brew services start postgresql
# Create database and user
psql postgres
CREATE DATABASE chatollama;
CREATE USER chatollama WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE chatollama TO chatollama;
\q
Update your .env file:
# Replace SQLite URL with PostgreSQL
DATABASE_URL="postgresql://chatollama:your_password@localhost:5432/chatollama"
Run database migrations:
pnpm prisma migrate deploy
Migrate existing SQLite data (if you have chat history to preserve):
pnpm migrate:sqlite-to-postgres
ChatOllama supports two vector databases. Configure in your .env file:
# Choose: chroma or milvus
VECTOR_STORE=chroma
CHROMADB_URL=http://localhost:8000
MILVUS_URL=http://localhost:19530
ChromaDB Setup (Default)
docker run -d -p 8000:8000 chromadb/chroma
Key configuration options in .env:
# Access Control
ACL_ENABLED=false # Set to 'true' for production (admin-only MCP management)
# Database
DATABASE_URL=file:../../chatollama.sqlite
# Server
PORT=3000
HOST=
# Vector Database
VECTOR_STORE=chroma
CHROMADB_URL=http://localhost:8000
# Optional: API Keys for commercial models
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GOOGLE_API_KEY=your_gemini_key
GROQ_API_KEY=your_groq_key
MOONSHOT_API_KEY=your_moonshot_key
# Optional: Proxy settings
NUXT_PUBLIC_MODEL_PROXY_ENABLED=false
NUXT_MODEL_PROXY_URL=http://127.0.0.1:1080
# Optional: Cohere for reranking
COHERE_API_KEY=your_cohere_key
You can enable or disable major product areas via feature flags. These can be set at build time using .env, or at runtime in Docker using NUXT_-prefixed variables.
Available features
Settings → MCP module. Flag: mcpEnabledknowledgeBaseEnabled/realtime voice chat page. Flag: realtimeChatEnabledModels menu and /models page. Flag: modelsManagementEnabledDocker (recommended for deployments)
Set runtime overrides with NUXT_ variables in docker-compose.yaml:
services:
chatollama:
environment:
- NUXT_MCP_ENABLED=true
- NUXT_KNOWLEDGE_BASE_ENABLED=true
- NUXT_REALTIME_CHAT_ENABLED=true
- NUXT_MODELS_MANAGEMENT_ENABLED=true
.env (build time during pnpm build)
If you are building locally (non-Docker) or creating a custom image, you can set:
MCP_ENABLED=true
KNOWLEDGE_BASE_ENABLED=true
REALTIME_CHAT_ENABLED=true
MODELS_MANAGEMENT_ENABLED=true
Note: These are evaluated when nuxt.config.ts is built. For prebuilt Docker images, prefer the NUXT_ variables above to override at runtime.
Notes
NUXT_ variables map directly to runtimeConfig keys at runtime and take precedence in containers.MCP_ENABLED=true in Compose will not override a prebuilt image’s runtimeConfig; use NUXT_MCP_ENABLED=true instead.ChatOllama integrates with MCP to extend AI capabilities through external tools and data sources. MCP servers are managed through a user-friendly interface in Settings.
ChatOllama provides flexible access control for MCP server management to support both development and production environments.
Permission Modes:
ACL_ENABLED=false (default): Open access - all users can manage MCP serversACL_ENABLED=true: Restricted access - only admin/superadmin users can manage MCP servers🔧 Development & Personal Use (Recommended: ACL_ENABLED=false)
# .env file
ACL_ENABLED=false
User Experience by Role:
| User Type | ACL_ENABLED=false | ACL_ENABLED=true |
|---|---|---|
| Unauthenticated | ✅ Full MCP access | ❌ Admin required |
| Regular User | ✅ Full MCP access | ❌ Admin required |
| Admin | ✅ Full MCP access | ✅ Full MCP access |
| Super Admin | ✅ Full MCP access | ✅ Full MCP access |
Important Notes:
ACL_ENABLED=trueSupported Transport Types:
Configuration via Settings UI:
STDIO Server Example:
Name: Filesystem Tools
Transport: stdio
Command: uvx
Args: mcp-server-filesystem
Environment Variables:
PATH: ${PATH}
Migration from Legacy Config:
If you have an existing .mcp-servers.json file:
pnpm exec ts-node scripts/migrate-mcp-servers.ts
Popular MCP Servers:
mcp-server-filesystem - File system operationsmcp-server-git - Git repository managementmcp-server-sqlite - SQLite database queriesmcp-server-brave-search - Web search capabilitiesHow MCP Works in Chat: When MCP servers are enabled, their tools become available to AI models during conversations. The AI can automatically call these tools to:
Tools are loaded dynamically and integrated seamlessly into the chat experience.
Common Issues and Solutions:
"Admin access required" message appears:
ACL_ENABLED=true and user lacks admin privileges# Option 1: Disable ACL (development)
ACL_ENABLED=false
# Option 2: Promote user to admin (contact super admin)
Cannot access MCP settings after enabling ACL:
# Set before first user signup
SUPER_ADMIN_NAME=admin-username
MCP tools not working in chat:
# Enable MCP feature
NUXT_MCP_ENABLED=true # Docker
MCP_ENABLED=true # .env
Permission changes not taking effect:
Before setting SUPER_ADMIN_NAME:
After setting SUPER_ADMIN_NAME:
.env file: SUPER_ADMIN_NAME=your-admin-usernameManaging existing users:
# Promote existing user to super admin
pnpm promote-super-admin username_or_email
# List current super admins
pnpm promote-super-admin --list
Super Admin Capabilities:
Admin Capabilities:
Regular User Capabilities:
# Recommended production settings
ACL_ENABLED=false # Default: open access to MCP management
SUPER_ADMIN_NAME=admin # Set super admin username
AUTH_SECRET=your-long-random-secret-key-here
Enable voice conversations with Gemini 2.0 Flash:
/realtime pageCreate searchable document repositories for enhanced conversations using RAG (Retrieval Augmented Generation):
KNOWLEDGE_BASE_ENABLED=true📖 Complete Configuration Guide →
Quick setup with Docker:
# All services included in docker-compose.yaml
docker compose up
Docker Deployment:
~/.chatollama/chatollama.sqliteDevelopment:
chatollama/
├── components/ # Vue components
├── pages/ # Nuxt pages (routing)
├── server/ # API routes and server logic
├── prisma/ # Database schema and migrations
├── locales/ # Internationalization files
├── config/ # Configuration files
└── docker-compose.yaml # Docker deployment
# Development
pnpm dev # Start development server
pnpm build # Build for production
pnpm preview # Preview production build
# Database
pnpm prisma-migrate # Run database migrations
pnpm prisma-generate # Generate Prisma client
pnpm prisma-push # Push schema changes
# User Management
pnpm promote-super-admin <username|email> # Promote user to super admin
pnpm promote-super-admin --list # List all super admins
pnpm install after each git pullpnpm prisma-migrate when schema changesJoin our Discord community for support, discussions, and updates:
TypeScript
72.3%
Vue
25.2%
SCSS
2.0%