项目处于 pre-release 阶段,升级前需备份数据并查看 release notes;不要直接暴露到公网,应放在 VPN 或带认证的反向代理后;需先自行启动本地 LLM 服务(如 llama-server),首次运行会自动下载模型。

eclaire
eclaire-labsMIT更新放缓本地优先的开源 AI 助手,把任务、笔记、文档、照片和书签统一管理,数据自托管不上传,还能通过 API 扩展。
Local-first, open-source AI assistant for your data. Unify tasks, notes, docs, photos, and bookmarks. Private, self-hosted, and extensible via APIs.
mkdir eclaire && cd eclaire
curl -fsSL https://raw.githubusercontent.com/eclaire-labs/eclaire/main/setup.sh | sh
docker compose up -dREADME 未给出具体显存或内存要求;默认在本地运行 AI 模型,需自备本地 LLM 服务(推荐 llama.cpp),并支持 Apple MLX、NVIDIA CUDA 等加速。
本地优先的开源 AI 助手,把任务、笔记、文档、照片和书签统一起来,让 AI 在私有数据上搜索、总结和自动化
本地优先的开源 AI 助手,把任务、笔记、文档、照片和书签统一管理,数据自托管不上传,还能通过 API 扩展。
核心能力
- 统一管理任务、笔记、文档、照片和书签,AI 可跨类型检索
- AI 对话带来源引用,支持流式输出与思考 token
- AI 工具调用可搜索数据、打开内容、处理任务、写笔记
- 接入 llama.cpp、vLLM、MLX、Ollama 等 OpenAI 兼容后端
- 书签自动生成 PDF 与 LLM 友好版本,支持 OCR 与文档转换
容易踩的坑
- v0.6.3最新正式版2026-03-06 · 2026-03-06 03:38 UTC
Bug Fixes
- workers: add tiered extraction with lightweight HTTP fetch before browser
- backend: include missing
thumbnailUrlandfaviconUrlin bookmark list responses - auth: harden Better Auth integration — security fixes, fail-fast init, dead code removal
- frontend: fix SSE connection leak on page refresh
- frontend: improve SSE streaming robustness and eliminate unnecessary re-renders
- frontend: fix re-render issues, remove debug logging, and improve data fetching
- frontend: remove hardcoded manifest link from
index.html - frontend: fix typecheck errors in
use-list-page-stateand test files - backend: correct case-sensitive filename in photos test
- backend: add missing type declaration for
turndown-plugin-gfm - workers: harden job processors with size guards, timeouts, SSRF protection, and dedup
- workers: improve document processor extraction quality, fix bugs, reduce resource usage
- workers: fix image processor bugs, improve robustness and format handling
- docker: add missing
tsconfig.base.jsonandapi-typesto build stages - deps: upgrade hono 4.12.5, @hono/node-server 1.19.11, add overrides for rollup/serialize-javascript/minimatch/tar
- vitest: fix broken frontend alias, clean up configs across monorepo
Refactoring
- backend: standardize all list endpoints to unified pagination shape
- backend: deduplicate schema definitions, review/flag/pin/reprocess endpoints, and route handlers
- backend: consolidate error classes, add
withAuth()wrapper, extract error schemas - backend: clean up routes, fix validation, add lazy sessions
- frontend: deduplicate list pages into shared abstractions, extract shared components
- frontend: split API modules, add CRUD hook factory and tests
- api: consolidate API types, fix pagination offset, and clean up schemas
- core: export const arrays for enum types, eliminate cross-package duplication
- ai: fix bugs and clean up for reusability
- queue: remove dead code, deduplicate adapters, fix layering
- logger: typed levels, explicit
contextKey, extensible context - db: harden PostgreSQL client, type
Txinterface, fix schema issues - storage: decouple adapters from domain key structure, clean up design
- workers: harden bookmark processing, extract
BrowserPipeline, improve content quality - monorepo: standardize TypeScript configuration; simplify and deduplicate utilities across all packages
Tests
- backend: fix and expand photo, bookmark, document, notes, and task test suites
- frontend: expand test suite with entity hooks, utilities, and API contract tests
- core: add comprehensive test suite for
@eclaire/core - queue: add core unit tests and strengthen integration test coverage
- storage: restructure tests with conformance suite and unit/integration split
- ai: expand MLX adapter and client test coverage
Maintenance
- deps: upgrade patch and minor dependencies across all workspaces
- deps: bump
actions/checkoutfrom 4 to 6,actions/setup-nodefrom 4 to 6 - lint: consolidate linting config with pnpm catalog
- v0.6.22026-02-24 · 2026-02-24 13:05 UTC
查看更新说明
Security
- deps: upgrade hono 4.11.4 → 4.12.2 for multiple CVEs (XSS, cache bypass, IP spoofing, timing attack)
- deps: upgrade axios 1.13.2 → 1.13.5 for GHSA-43fc-jf86-j433 (DoS via
__proto__in mergeConfig) - deps: upgrade node-gyp 12.1.0 → 12.2.0 and refresh transitive deps (tar, minimatch, ajv, qs, brace-expansion)
- deps: resolve seroval and diff vulnerabilities via clean reinstall
- frontend: fix XSS vulnerability from unsanitized
dangerouslySetInnerHTMLuncovered during lint audit
CI/CD
- ci: expand lint workflow into full CI with parallel lint, typecheck, build, and test jobs
- ci: add PR lint workflow enforcing Biome and oxlint with zero warnings
- ci: add Dependabot config for npm security alerts and GitHub Actions auto-updates
Bug Fixes
- frontend: generate route tree before typecheck to fix CI build order
- packages: resolve types from source for workspace packages so typecheck works without a prior build step
- packages: fix 12 strict null check errors across core/encryption, queue, and storage packages
- lint: resolve stale closure risks from missing
useCallbackdependencies in React hooks - lint: fix accessibility errors across frontend components
Refactoring
- lint: adopt Biome and oxlint as dual linters with unified
pnpm lintscript - lint: resolve all Biome and oxlint errors and warnings across the monorepo (~340 files touched)
- lint: replace non-null assertions with runtime guards to satisfy
noNonNullAssertion - lint: use stable keys instead of array indices in React list components
- storage: replace
as unknown ascasts with properNodeWebReadableStreamtypes - backend: use
Number.isFiniteover globalisFinite, fix shadowed variables
Maintenance
- deps: upgrade patch and minor dependencies across all workspaces (biome 2.4.4, bullmq 5.70.1, pg 8.18.0, pino 10.3.1, playwright 1.58.2, react 19.2.4, vite 7.3.1, vitest 4.0.18)
- deps: upgrade better-auth 1.4.19, hono 4.12.2, TanStack Router 1.162.8, tailwindcss 4.2.1, pnpm 10.30.2
- cleanup: remove unused imports, variables, and function parameters across backend and frontend
- cleanup: adopt
node:protocol for all Node.js builtin imports - config: exclude generated service worker files from Biome linting
- config: expand root lint and format scripts to cover entire monorepo
- v0.6.12026-01-14 · 2026-01-14 02:28 UTC
查看更新说明
Security
- backend: upgrade hono to 4.11.4 for CVE-2026-22817 (JWT Algorithm Confusion)
- v0.6.02026-01-09 · 2026-01-09 05:52 UTC
查看更新说明
Highlights
- Unified deployment: frontend + backend + workers can run in a single container
- Simplified Self-Hosting - new one-command
setup.shflow, plus a streamlinedcompose.yaml - Better AI Support - New vision models, llama.cpp router, expanded provider support
- Modern Frontend - Migrated from Next.js to Vite + TanStack Router
- New Admin CLI - Manage your instance from the command line
Features
- Unified Deployment: Single container can serve as backend, workers, or both via
SERVICE_ROLEenvironment variable - SQLite Support: Full SQLite database support alongside Postgres with comprehensive parity tests
- Database Queue Mode: Use Postgres or SQLite for job processing instead of Redis/BullMQ
- In-Memory Notifications: Single-process deployments no longer require Redis
- Admin CLI: New
admin-cliintegrated into Docker for instance management - Auto-Upgrade System: Database migrations run automatically at startup
- Qwen3-VL-8B: Added support for Qwen3-VL-8B vision model
- llama.cpp Router: Support for llama-server's new router endpoint
- Request ID Tracing: Better observability and debugging across distributed components
- Version-Prefixed Encryption: Enables future key rotation support
Improvements
- Frontend: Migrated from Next.js to Vite with TanStack Router for faster builds and modern routing
- ES Modules: Complete migration from CommonJS to ES modules
- Tailwind CSS v4: Upgraded to latest Tailwind with tw-animate-css support
- Transaction Support: Read-Modify-Write for Postgres, mutex serialization for SQLite
- Services Architecture: Thin routes pattern with extracted services layer
- Modular Packages: New @eclaire/ai, @eclaire/storage, @eclaire/queue packages
- AI Tool Calling: More robust native tool calling support
- AI Providers: Improved support for llama.cpp, MLX-LM, MLX-VLM, and LM Studio backends
- Dependency Upgrades: Vite 7, Vitest 4, Playwright 1.57, Pino 10, Recharts 3, Better Auth 1.4.5
Bug Fixes
- User queue jobs now deleted when account is deleted
- Fixed AI response truncation/repetition detection with improved JSON parsing
- SQLite case-insensitive sorting for text columns
- Docker layer caching optimized for faster builds
- Queue callback race conditions resolved with timeout safety guards
- Route detail views render correctly
- Image URL fallback uses thumbnailUrl consistently
- Auth session tests include Origin header for CSRF validation
- Sharp/native dependency handling with SHARP_IGNORE_GLOBAL_LIBVIPS
Breaking Changes
- TaskStatus: Removed
cancelledstatus from enum - SERVICE_ROLE: New environment variable for deployment mode configuration
- Data Directories: Changed from
data/dbtodata/postgres,data/pglite,data/sqlite - SQLITE_DB_PATH: Renamed from
SQLITE_DATA_DIR - Environment: Simplified to single
.envfile configuration - Admin CLI:
model-clireplaced withadmin-cli - Build Script:
build.shnow defaults to dev mode (use--prodfor production) - Production Port: Standardized to port 3000
Migration from v0.5.x
There is no automated upgrade path from v0.5.x to v0.6.0. Due to significant architectural changes, we recommend setting up a fresh v0.6.0 instance and transferring your data from your previous installation.
If you need help migrating, please open an issue or reach out to us - we're happy to assist.
Infrastructure
- All dependencies pinned to exact versions for reproducible builds
- Root biome config for consistent formatting/linting
- Restructured tests directory (
__tests__→tests) - TypeScript config standardized (typecheck includes tests, build excludes)
- ioredis pinned to 5.8.2 for BullMQ compatibility
Documentation
- AI Model Configuration
- v0.5.22025-12-04 · 2025-12-04 05:22 UTC
查看更新说明
Security
- frontend: upgrade Next.js to 15.5.7 for CVE-2025-55182
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
⚠️ Important Notices
[!IMPORTANT]
Pre-release / Development Status
Eclaire is currently in pre-release and under active development.
Expect frequent updates, breaking changes, and evolving APIs/configuration.
If you deploy it, please backup your data regularly and review release notes carefully before upgrading.
[!WARNING]
Security Warning
Do NOT expose Eclaire directly to the public internet.
This project is designed to be self-hosted with privacy and security in mind, but it is not hardened for direct exposure.We strongly recommend placing it behind additional security layers such as:
- Tailscale or other private networks/VPNs
- Cloudflare Tunnels
- A reverse proxy with authentication
Description
Eclaire is a local-first, open-source AI that organizes, answers, and automates across tasks, notes, documents, photos, bookmarks and more.
There are are lot of existing frameworks and libraries enabling various AI capabilities; few deliver a complete product allowing users to get things done. Eclaire assembles proven building blocks into a cohesive, privacy-preserving solution you can run yourself.
With AI gaining rapid adoption, there is a growing need for alternatives to closed ecosystems and hosted models, especially for personal, private, or otherwise sensitive data.
- Self-hosted - runs entirely on your hardware with local models and data storage
- Unified data - one place where AI can see and connect everything
- AI-powered - content understanding, search, classification, OCR, and automation
- Open source - transparent, extensible, and community-driven
What's New in v0.6.0
- Unified deployment: frontend + backend + workers can run in a single container
- Simplified Self-Hosting - new one-command
setup.shflow, plus a streamlinedcompose.yaml - Better AI Support - New vision models (including Qwen3-VL), llama.cpp router, improved MLX support.
- Modern Frontend - Migrated from Next.js to Vite + TanStack Router
- SQLite Support: Full SQLite database support alongside Postgres for simpler workloads
- Database Queue Mode: Postgres or SQLite for job processing with no external dependencies
- New Admin CLI - Manage your instance from the command line
See the CHANGELOG for full details.
Features
- Cross-platform: macOS, Linux and Windows.
- Private by default: By default all AI models run locally, all data is stored locally.
- Unified data: Manage across tasks, notes, documents, photos, bookmarks and more.
- AI conversations: chat with context from your content; see sources for answers; supports streaming and thinking tokens.
- AI tool calling: The assistant has tools to search data, open content, resolve tasks, add comments, create notes, and more
- Flexible deployment: Run as a single unified container or separate services. SQLite or Postgres. Database queue or Redis. (See Architecture section below.)
- Full API: OpenAI-compatible REST endpoints with session tokens or API keys. API Docs
- Model backends: works with llama.cpp, vLLM, mlx-lm/mlx-vlm, LM Studio, Ollama, and more via the standard OpenAI-compatible API. (See Selecting Models.)
- Model support: text and vision models from Qwen, Gemma, DeepSeek, Mistral, Kimi, and others. (See Selecting Models.)
- Storage: all assets (uploaded or generated) live in Postgres or file/object storage.
- Integrations: Telegram (more channels coming).
- Documents: PDF, DOC/DOCX, PPT/PPTX, XLS/XLSX, ODT/ODP/ODS, MD, TXT, RTF, Pages, Numbers, Keynote, HTML, CSV, and more.
- Photos/Images: JPG/JPEG, PNG, SVG, WebP, HEIC/HEIF, AVIF, GIF, BMP, TIFF, and more.
- Tasks: track user tasks or assign tasks for the AI assistant to complete; the assistant add comments to tasks or write to separate docs.
- Notes: plain text or Markdown format. Links to other assets.
- Bookmarks: Fetches bookmarks and creates PDF, Readable and LLM friendly versions. Special handling for Github and Reddit APIs and metadata.
- Organization: Tags, pin, flag, due dates, etc. across all asset types.
- Hardware acceleration: takes advantage of Apple MLX, NVIDIA CUDA, and other platform-specific optimizations.
- Mobile & PWA: installable PWA; iOS & Apple Watch via Shortcuts; Android via Tasker/MacroDroid.
Sample use cases
- Dictate notes using Apple Watch (or other smartwatch).
- Save bookmarks to read later; generate clean “readable” and PDF versions.
- Create readable and PDF versions of websites
- Extract text from photos and document images (OCR).
- Bulk-convert photos from HEIC to JPG.
- Analyze, categorize, and search documents and photos with AI.
- Create LLM-friendly text/Markdown versions of documents and bookmarks.
- Save interesting content (web pages, photos, documents) from phone, tablet, or desktop.
- Ask AI to find or summarize information across your data.
- Schedule automations (e.g., “Every Monday morning, summarize my tasks for the week.”).
- Chat with AI from web, mobile, Telegram, and other channels.
- Process sensitive information (bank, health, etc.) privately on local models.
- De-clutter your desktop by bulk-uploading and letting AI sort and tag.
- Migrate data from Google/Apple and other vendors into an open, self-hosted platform under your control.
Screenshots
Installation
Prerequisites
- Docker and Docker Compose
- A local LLM server - llama.cpp recommended
Quick Start
mkdir eclaire && cd eclaire
curl -fsSL https://raw.githubusercontent.com/eclaire-labs/eclaire/main/setup.sh | sh
The script will:
- Download configuration files
- Generate secrets automatically
- Initialize the database (PostgreSQL)
After setup completes:
# 1. Start your LLM servers (in separate terminals)
# Models download automatically on first run if not already cached
llama-server -hf unsloth/Qwen3-14B-GGUF:Q4_K_XL --ctx-size 16384 --port 11500
llama-server -hf unsloth/gemma-3-4b-it-qat-GGUF:Q4_K_XL --ctx-size 16384 --port 11501
# 2. Start Eclaire
docker compose up -d
Complete the setup wizard — open http://localhost:3000 in your browser, or run ./eclaire onboard for CLI setup. The wizard guides you through admin account creation, AI provider configuration, and model selection.
Configuration
Configuration lives in two places:
.env- secrets, database settings, ports- Admin UI / CLI - LLM providers, models, and active selection (stored in DB)
Stopping
docker compose down
Selecting Models
Eclaire uses AI models for two purposes:
- Backend: Powers the chat assistant (requires good tool calling)
- Workers: Processes documents and images (requires vision capability)
Apple Silicon: Mac users can leverage MLX for optimized local inference. See the configuration guide for details.
Use the CLI to manage models:
./eclaire model list
See AI Model Configuration for detailed setup and model recommendations.
Architecture
Eclaire follows a modular architecture with clear separation between the frontend, backend API, background workers, and data layers.
📋 View detailed architecture diagram →
Key Components
- Frontend: Vite web application with React 19, TanStack Router, and Radix UI
- Backend API: Node.js/Hono server with REST APIs
- Background Workers: Job processing and scheduling (runs unified with backend by default)
- Data Layer: PostgreSQL (recommended) or SQLite for persistence; database or Redis for job queue
- AI Services: Local LLM backends (llama.cpp, MLX, LM Studio, etc.) for inference; Docling for document processing
- External Integrations: GitHub and Reddit APIs for bookmark fetching
Roadmap
- Support for more data sources and integrations
- More robust full text indexing and search
- Better extensibility and plugin system
- Improved AI capabilities and model support
- Evals for models and content pipelines
- More hardening and security
- Top requests from the community
Development
For contributors who want to build from source.
Additional Prerequisites
Beyond Docker and an LLM server, you'll need:
- Node.js ≥ 24 with corepack enabled
- pnpm (managed via corepack)
Document/image processing tools:
macOS:
brew install --cask libreoffice
brew install poppler graphicsmagick imagemagick ghostscript libheif
Ubuntu/Debian:
sudo apt-get install libreoffice poppler-utils graphicsmagick imagemagick ghostscript libheif-examples
Setup
git clone https://github.com/eclaire-labs/eclaire.git
cd eclaire
corepack enable
pnpm setup:dev
pnpm dev
Access the application:
- Frontend: http://localhost:3000
- Backend: http://localhost:3001/health
Building Docker Locally
To build and test custom Docker images:
./scripts/build.sh
docker compose -f compose.yaml -f compose.dev.yaml -f compose.local.yaml up -d
Contributing
We 💙 contributions! Please read the Contributing Guide.
Security
See SECURITY.md for our policy.
Telemetry
There should be no telemetry in the Eclaire code although 3rd party dependencies may have. If you find an instance where that is the case, let us know.
Community & Support
Issues: GitHub Issues