Skip to content

Repository files navigation

🦀 CrustAI

Your AI Assistant. Your Machine. Your Rules.

100% Private · Runs Locally · Multi-Platform · Zero Cloud

npm versionNode.jsLicense: MITContributions WelcomeSelf-HostedOllama

WindowsmacOSLinux


Chat with your own AI on Telegram, Discord, WhatsApp, and Slack — no data ever leaves your machine.


Get Started

git clone https://github.com/DaveSimoes/CrustAI.git
cd CrustAI && npm install && npm start

AI assistant running 100% locally — chat on Telegram, fully offline.CrustAI Live Demo

new_video_real_chatonline-video-cutter com-ezgif com-optimize

Why CrustAI?

Every AI assistant you use today sends your conversations to a cloud server. Your questions, your context, your data — all stored externally.

CrustAI is different. It runs entirely on your own machine using Ollama, meaning:

Without CrustAIWith CrustAI
Conversations logged on cloud serversConversations stay on your machine
Data used to train external modelsZero data collection, ever
Requires paid API keys100% free, uses local models
One platform (e.g., only ChatGPT web)Works on Telegram, Discord, WhatsApp, Slack
Internet requiredWorks fully offline

Key Features

🔒 100% PrivateEvery message stays on your device. No telemetry, no external APIs, no logs
🧠 Powered by OllamaUse llama3.2, mistral, phi3, tinyllama and any model you choose
📱 4 Platforms, 1 BotConnect to Telegram, Discord, WhatsApp, and Slack simultaneously
🧬 Long-Term MemoryYour assistant remembers facts about you across sessions
🗣️ Voice SupportSpeak and listen — fully offline voice mode (pt-BR)
REST APIIntegrate CrustAI into your own tools and workflows
🎭 Personality ConfigGive your assistant a custom name, tone, and identity
🐳 Docker ReadyOne-command deployment for servers and home labs
🌐 BilingualFull English + Portuguese support out of the box

Quick Start

Prerequisites

Install & Run

# 1. Clone the repository
git clone https://github.com/DaveSimoes/CrustAI.git
cd CrustAI
# 2. Install dependencies
npm install
# 3. Start Ollama and pull a model
ollama serve
ollama pull tinyllama # lightweight — 600MB, works on any machine# or
ollama pull llama3.2 # more powerful — 2GB, recommended 8GB RAM# 4. Configure
cp config/config.example.yml config/config.yml
# Edit config/config.yml with your platform tokens# 5. Launch CrustAI
npm start

📊 Model Benchmark

Run a full performance comparison across all supported Ollama models — no cloud, no setup, just results.

node scripts/benchmark.js

Configuration

Edit config/config.yml:

model: tinyllama # or llama3.2, phi3, mistral...ollama_url: http://localhost:11434language: en # or pt-BRtelegram:
enabled: truetoken: YOUR_BOT_TOKEN_HEREallowed_user_ids: [] # leave empty to allow all usersdiscord:
enabled: falsetoken: ""whatsapp:
enabled: falseslack:
enabled: falsevoice:
enabled: falseport: 8765

Available Commands

CommandDescription
/pingCheck if the bot is alive
/helpShow all available commands
/modelDisplay which AI model is currently running
/remember <fact>Store a fact in long-term memory
/forgetErase all stored facts
/clearClear conversation history

Architecture

Messaging Platforms (Telegram / Discord / WhatsApp / Slack)
│
▼
┌─────────────────────┐
│ Message Orchestrator│
└────────┬────────────┘
│
┌──────────┴──────────┐
▼ ▼
┌─────────────┐ ┌──────────────┐
│ Ollama LLM │ │ Memory Store │
│ (local) │ │ (sql.js) │
└─────────────┘ └──────────────┘
│ │
└──────────┬──────────┘
▼
┌─────────────┐
│ REST API │
│ (Fastify) │
└─────────────┘

Design principle: Adapter boundaries make it trivial to add new messaging platforms without touching the core conversation logic.


How It Works

  1. Adapters — Each platform (Telegram, Discord, WhatsApp, Slack) has its own isolated adapter. Messages are normalized into a unified format before reaching the orchestrator.
  2. Orchestrator — Receives messages, applies personality config, queries the LLM, and manages conversation context.
  3. Ollama LLM — Runs any compatible model locally. No network calls. No rate limits. No billing.
  4. Memory Store — Persists user-defined facts in a local SQLite database, available across sessions.
  5. REST API — Exposes endpoints for integrating CrustAI into custom tools, automations, and dashboards.

Tech Stack

TechnologyPurpose
Node.jsRuntime environment
OllamaLocal LLM inference engine
node-telegram-bot-apiTelegram integration
@whiskeysockets/baileysWhatsApp integration
discord.jsDiscord integration
@slack/boltSlack integration
FastifyREST API server
sql.jsEmbedded database for memory
yamlConfiguration management

Project Structure

crustai/
├── src/
│ ├── core/
│ │ ├── index.js # Main orchestrator
│ │ ├── llm.js # Ollama LLM client
│ │ └── commands.js # Command handler
│ ├── adapters/
│ │ ├── telegram/ # Telegram bot
│ │ ├── discord/ # Discord bot
│ │ ├── whatsapp/ # WhatsApp bot
│ │ └── slack/ # Slack bot
│ ├── memory/
│ │ └── store.js # Long-term memory (SQLite)
│ ├── personality/
│ │ └── prompt.js # System prompt builder
│ ├── voice/
│ │ └── server.js # Offline voice WebSocket server
│ └── api/
│ └── server.js # REST API
├── config/
│ ├── config.yml # Your config (git-ignored)
│ ├── config.example.yml # Template
│ └── personality.yml # Assistant personality
├── demo/
│ ├── terminal.gif
│ ├── ping.gif
│ └── chat.gif
└── data/ # Local database (git-ignored)

Privacy First

CrustAI was built with privacy as its core principle — not as a feature, but as a hard technical constraint:

  • ✅ All conversations stay on your machine
  • ✅ No API keys sent to external AI providers
  • ✅ No telemetry, usage tracking, or analytics
  • ✅ No accounts, no sign-up, no terms-of-service surprise
  • ✅ Fully open source — inspect every single line
  • ✅ Your data. Your models. Your rules.

Supported Models (via Ollama)

ModelSizeBest For
tinyllama~600MBLow-end machines, quick replies
phi3~2GBBalanced performance
llama3.2~2GBGeneral purpose, highly capable
mistral~4GBStrong reasoning and coding
llama3~4GBHigh quality conversations

Any model available on ollama.ai can be used.


Roadmap

  • Telegram integration
  • Discord integration
  • WhatsApp integration
  • Slack integration
  • Long-term memory
  • REST API
  • Bilingual support (EN / PT-BR)
  • Web UI dashboard
  • Docker one-click deployment
  • Image understanding (multimodal LLMs)
  • Plugin system for custom tools
  • Mobile app companion

Contributing

Contributions are very welcome! Please read CONTRIBUTING.md before opening a PR.

# Fork the repository, then:
git checkout -b feature/your-feature
git commit -m "feat: add your feature"
git push origin feature/your-feature
# Open a Pull Request

Troubleshooting

"Connection refused" on Ollama — Make sure Ollama is running: ollama serve

Bot not responding on Telegram — Double-check your token in config/config.yml and that the bot was started with /start.

High memory usage — Switch to a lighter model like tinyllama. Edit model: in config/config.yml.

WhatsApp keeps disconnecting — WhatsApp Web sessions expire. Restart CrustAI to regenerate the QR code.


Language / Idioma


🇧🇷 O que é o CrustAI?

CrustAI é um assistente de IA totalmente privado e auto-hospedado que roda inteiramente na sua própria máquina — nenhum dado sai do seu computador. Conecta-se ao Telegram, WhatsApp, Discord e Slack com o poder de modelos de linguagem locais, sem depender de nenhum provedor externo.

✨ Funcionalidades Principais

FuncionalidadeDescrição
🔒 100% PrivadoTodos os dados ficam na sua máquina. Sem nuvem, jamais
🧠 LLM LocalPowered by Ollama — llama3.2, tinyllama, mistral e muito mais
📱 Multi-PlataformaTelegram, WhatsApp, Discord, Slack — um só assistente
🧬 Memória LongaLembra fatos sobre você entre conversas
🗣️ Voz OfflineFala e escuta sem internet (pt-BR)
REST APIIntegre o CrustAI em qualquer fluxo de trabalho
🎭 PersonalidadeConfigure nome, tom e comportamento do assistente

🚀 Início Rápido

# 1. Clone o repositório
git clone https://github.com/DaveSimoes/CrustAI.git
cd CrustAI
# 2. Instale as dependências
npm install
# 3. Inicie o Ollama e baixe um modelo
ollama serve
ollama pull tinyllama
# 4. Configure o projeto
cp config/config.example.yml config/config.yml
# Edite config/config.yml com seu token do Telegram# 5. Inicie o CrustAI
npm start

Author

Dave Simoes — Developer passionate about AI, privacy, and open source.


License

MIT — see LICENSE for details.


Releases

Packages

Contributors

Languages