All-in-one LLM client. Make a multimodal AI yourself.
Your own multimodal AI assistant — powered by the models you choose, running on every device you own.
Features • Documentation • Quick Start • Screenshots • License
English | 中文文档
Tessera (τέσσερα, Greek for "four") is a cross-platform AI chat client built with Flutter. It unifies multiple LLM providers under one interface and seamlessly routes multimodal tasks — vision, audio, image generation, speech — to the right models. An experimental long-term memory system extracts, retrieves, compresses, and forgets like a human mind.
- 🤖 Multi-Provider LLM Access — OpenAI, Anthropic, Google AI, Ollama. Each provider keeps its own API key, base URL, and model config.
- 🔄 Streaming Conversations — Token-by-token responses with full Markdown rendering and syntax-highlighted code blocks.
- 🧠 Capability Adapter System — Automatically routes vision, audio, image generation, and TTS tasks to specialized sub-models via function-calling.
- 💾 Intelligent Prompt Caching — Three-block system prompt with SHA256 delta caching; only changed blocks are re-sent.
- 🧠 Long-Term Memory — SimHash-based semantic search, DBSCAN clustering with LLM compression, exponential-decay forgetting, and rolling conversation summaries.
- 🧩 Extensible Plugin System — Sandboxed Lua 5.3 runtime (
NaivG/luax). Write a script, register tools and skills — no rebuild needed. - 🔍 Discover System — Tag and capability indexing: the LLM sees a compact skill catalog and calls
discoverto get lightweight summaries;ToolCallValidatorreturns the full schema when arguments are wrong. - 🛠️ Workspace Tools — Sandboxed local file tools (
workspace_read/write/edit/patch/mkdir/delete/...) with line-range reads, stale-read enforcement, and a per-write user-approval dialog. - 🤝 Sub-Agents —
SubAgentManagerlaunches multiple sub-tasks in parallel streaming fashion, each with its own session card, system-prompt variant, and live delta aggregation. - 📏 Context Window Manager — Client-side token budget enforcement with CJK-aware estimation, an 80% usage threshold, and LLM-driven summarization of the oldest messages.
- 🎤 Voice Interaction — Speech-to-text input and text-to-speech output.
- 📚 Conversation Management — SQLite persistent storage, create/rename/delete, media library, Agent / Plan / Default conversation modes.
- 🎨 User Experience — Material 3 design, light/dark theme, desktop window management, streaming Markdown with code highlighting, token-usage indicator in the input area.
- 🌐 Localization — Fully localized in English and Chinese, extensible via Flutter l10n.
See Documentation for deep-dive architecture, tech stack, project structure, and subsystem references.
- Flutter SDK 3.11+
- Platform-specific build tools (Xcode, Android Studio, Visual Studio, etc.)
git clone https://github.com/NaivG/tessera.git
cd tessera
flutter pub get
flutter runDesktop builds auto-configure the window: minimum 400×600, default 480×720, centered.
- Launch the app and navigate to Settings
- Add an LLM provider (OpenAI / Anthropic / Google / Ollama)
- Enter your API key and optional base URL
- Configure models for the provider
- Select your main chat model and specialized models per capability
- Return to the main page and start a conversation
Deep-dive architecture, tech stack, project structure, and subsystem references are in docs/en/:
- Plugin System — Lua sandbox, manifest schema, bridge API, distribution format, authoring guide
- Memory System — SimHash indexing, extraction pipeline, retrieval scoring, DBSCAN + LLM compression, exponential-decay forgetting
- LLM Provider Abstraction — Unified
LlmProviderinterface, streaming protocol, structured output withJsonExtractor - Capability Adapter — Multimodal routing architecture, model selection slots, function-call bridging
- Workspace Tools — Sandboxed local file tools with line-range reads, stale-read enforcement, and write approval
- Discover System — Compact skill catalog, the
discovertool, andToolCallValidator(fail-with-schema) - Sub-Agents —
SubAgentManagerparallel streaming sub-tasks and thesub_agenttool - Context Window Manager — Client-side token budget, 80% threshold, LLM-driven summarization
(Coming soon — screenshots of chat, settings, model selection, memory viewer, and media library)
Copyright (C) 2026 NaivG and contributors.
This project is licensed under the GNU Affero General Public License v3.0 — see the LICENSE file for details.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.