selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

eclaire logo

Self-host eclaire

v0.6.3

Local-first AI assistant for tasks, notes, docs, photos

BetaOpen SourceMIT
Updated5 months ago
LanguageTypescript
Setup difficultyAdvanced
MobilePWA
ThemeDark mode
Stars
926
Port
3000 (Web UI (frontend + backend unified))
Requires
Docling, llama.cpp (or compatible LLM server)
Docker
ghcr.io/eclaire-labs/eclaire
Install with Docker Compose
Dashboard view in light modeDashboard view in dark modeMain interface in light mode with numbered calloutsMain interface in dark mode with numbered calloutsAI Assistant conversation view in light modeAI Assistant conversation view in dark modeBookmark management interface in light modeBookmark management interface in dark modeDocument analysis interface in light modeDocument analysis interface in dark mode

What is eclaire?

Eclaire is a privacy-focused AI assistant you host yourself. It centralizes your personal information — to-dos, notes, files, images, and saved links — with a local LLM that can chat about your data, run OCR, tag content, and automate workflows. You run it via Docker Compose as a single container or split services, backed by PostgreSQL or SQLite. The web interface is a React PWA with dark mode, works on mobile, and connects to Apple Shortcuts or Android automation tools. A full OpenAI-compatible REST API lets you build custom integrations. The project is in pre-release (v0.6.x) so expect frequent updates and breaking changes.

Should you self-host eclaire?

eclaire scores 50/100 on selfhost.directory (how scoring works) and ranks #40 of 120 in AI Assistant. It has 926 GitHub stars.

It shipped 8 stable releases in the past year. The latest, v0.6.3, came out on 6 March 2026. New versions land roughly every 2 weeks.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is hermes-agent (89/100, 258 015 stars). It scores higher overall, so compare the two before you pick. See eclaire vs hermes-agent side by side.

Features

  • Admin CLI
  • AI Assistant with Tool Calling
  • Bookmark Management
  • Document Processing & OCR
  • Flexible Deployment Modes
  • Hardware Acceleration
  • Multiple LLM Backend Support
  • Notes with Rich Text/Markdown
  • OpenAI-compatible REST API
  • Photo Management & OCR
  • Scheduled Automations
  • Task Management
  • Unified Data Management

eclaire README

How to install eclaire

Install eclaire with Docker Compose

Docker, Docker Compose, local LLM server (llama.cpp recommended)

mkdir eclaire && cd eclaire curl -fsSL https://raw.githubusercontent.com/eclaire-labs/eclaire/main/setup.sh | sh

1. Start your LLM servers (in separate terminals)

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

Requires Docker and Docker Compose; LLM servers run on host for GPU access

How to configure eclaire

  • AI_TIMEOUT
  • ANTHROPIC_API_KEY
  • API_KEY_HMAC_KEY_V1
  • BACKEND_URLBackend URL (defaults to FRONTEND_URL in containers, http://127.0.0.1:3001 locally) In Docker, frontend and backend are the same origin — set this to the same value as FRONTEND_URL if you override it.

    Backend URL (defaults to FRONTEND_URL in containers, http://127.0.0.1:3001 locally) In Docker, frontend and backend are the same origin — set this to the same value as FRONTEND_URL if you override it.

  • BETTER_AUTH_SECRETSecurity Secrets (REQUIRED - generated by setup scripts) Generate manually with: openssl rand -hex 32

    Security Secrets (REQUIRED - generated by setup scripts) Generate manually with: openssl rand -hex 32

  • DATABASE_HOSTPostgreSQL connection (optional - defaults work with included postgres container) Host auto-detected: 'postgres' in containers, '127.0.0.1' locally

    PostgreSQL connection (optional - defaults work with included postgres container) Host auto-detected: 'postgres' in containers, '127.0.0.1' locally

  • DATABASE_NAME
  • DATABASE_PASSWORD
  • DATABASE_PORT
  • DATABASE_TYPEpostgresDatabase Configuration Default: postgres (recommended for dev/prod parity) Options: sqlite | pglite | postgres

    Database Configuration Default: postgres (recommended for dev/prod parity) Options: sqlite | pglite | postgres

  • DATABASE_URLOr provide a full connection string (overrides individual settings)

    Or provide a full connection string (overrides individual settings)

  • DATABASE_USER
  • DOCLING_SERVER_URLExternal Services Docling URL auto-detected: 'http://docling:5001' in containers, 'http://127.0.0.1:5001' locally Override only if your setup differs:

    External Services Docling URL auto-detected: 'http://docling:5001' in containers, 'http://127.0.0.1:5001' locally Override only if your setup differs:

  • FRONTEND_URLPublic-facing URL (for OAuth callbacks, email links, etc.) Set this to the URL users type in their browser. Required for: - Reverse proxy setups (e.g. https://app.example.com) - LAN access (e.g. http://nas.local:3000) For plain localhost, the defaults work out of the box.

    Public-facing URL (for OAuth callbacks, email links, etc.) Set this to the URL users type in their browser. Required for: - Reverse proxy setups (e.g. https://app.example.com) - LAN access (e.g. http://nas.local:3000) For plain localhost, the defaults work out of the box.

  • GITHUB_TOKENGitHub token (for higher rate limits on GitHub bookmark processing)

    GitHub token (for higher rate limits on GitHub bookmark processing)

  • HOST_PORTServer Host port for Docker (the container always listens on 3000 internally)

    Server Host port for Docker (the container always listens on 3000 internally)

  • LLAMA_CPP_BASE_URLAI Configuration Providers and models are configured via the web UI or CLI. Local LLM server URLs are auto-detected based on ECLAIRE_RUNTIME: - Container: http://host.docker.internal:<port>/v1 - Local: http://127.0.0.1:<port>/v1 Override only if your setup differs from defaults:

    AI Configuration Providers and models are configured via the web UI or CLI. Local LLM server URLs are auto-detected based on ECLAIRE_RUNTIME: - Container: http://host.docker.internal:<port>/v1 - Local: http://127.0.0.1:<port>/v1 Override only if your setup differs from defaults:

  • LLAMA_CPP_BASE_URL_2
  • LM_STUDIO_BASE_URL
  • LOG_LEVELPerformance Tuning (optional)

    Performance Tuning (optional)

  • MASTER_ENCRYPTION_KEY
  • MLX_LM_BASE_URL
  • MLX_VLM_BASE_URL
  • OLLAMA_BASE_URL
  • OPENAI_API_KEYCloud provider API keys (referenced by AI provider config in DB)

    Cloud provider API keys (referenced by AI provider config in DB)

  • OPENROUTER_API_KEY
  • PGLITE_DATA_DIR
  • PORTPort for local (non-Docker) development

    Port for local (non-Docker) development

  • QUEUE_BACKENDpostgresQueue backend (set by setup script to match database type) Options: sqlite | postgres Note: sqlite queue requires SERVICE_ROLE=all and DATABASE_TYPE=sqlite

    Queue backend (set by setup script to match database type) Options: sqlite | postgres Note: sqlite queue requires SERVICE_ROLE=all and DATABASE_TYPE=sqlite

  • REDDIT_CLIENT_IDReddit API (for Reddit bookmark processing)

    Reddit API (for Reddit bookmark processing)

  • REDDIT_CLIENT_SECRET
  • SERVICE_ROLEService Mode Default: all (unified mode - API + workers in single process) Options: all | api | worker

    Service Mode Default: all (unified mode - API + workers in single process) Options: all | api | worker

  • SQLITE_DATA_DIRSQLite/PGlite data directories (only if using sqlite/pglite)

    SQLite/PGlite data directories (only if using sqlite/pglite)

  • WORKER_CONCURRENCY
  • X_BEARER_TOKENX (Twitter) API — Tweet Lookup (app-only, no user OAuth needed) Bearer Token from your X app's "Keys and tokens" page (OAuth 2.0 App-Only) Requires Basic tier ($200/mo) — https://developer.x.com/en/portal/dashboard

    X (Twitter) API — Tweet Lookup (app-only, no user OAuth needed) Bearer Token from your X app's "Keys and tokens" page (OAuth 2.0 App-Only) Requires Basic tier ($200/mo) — https://developer.x.com/en/portal/dashboard

  • X_CLIENT_IDX (Twitter) API — Bookmarks Sync (requires per-user OAuth) Client ID and Secret for OAuth 2.0 with PKCE authorization flow Only needed if you want users to import their X bookmarks

    X (Twitter) API — Bookmarks Sync (requires per-user OAuth) Client ID and Secret for OAuth 2.0 with PKCE authorization flow Only needed if you want users to import their X bookmarks

  • X_CLIENT_SECRET

eclaire releases & version history

FAQ

How can I contribute or report issues?

Star the repo, open issues/PRs, and join discussions. The project welcomes bug reports, fixes, new features and integrations.

Can I export or delete my data?

Yes, you retain full ownership and can export or remove your data at any time via the client or APIs.

Is it really open-source?

Yes, Eclaire is fully open-source. The LICENSE file in the GitHub repo provides details.

Is there a hosted version available?

Currently, Eclaire is only available as a self-hosted solution to ensure maximum privacy and control. However, business consulting and managed deployment services are offered for organizations that need assistance.

What are the system requirements?

Eclaire runs on Mac Mini/Studio (M1 or above) and on Linux/Windows with GPUs. The amount of memory needed depends on the AI models selected.

Can I integrate Eclaire with my existing tools?

Yes, Eclaire provides a comprehensive REST API and supports integrations with popular tools. It also works seamlessly with Apple Shortcuts, Android automation, and can be extended with custom integrations.

What AI models does Eclaire support?

Eclaire supports popular open-source models including Qwen, Gemma, Deepseek, Kimi, Llama, and many others. You can download models from Hugging Face or connect it to cloud inference APIs, and easily switch between models or run multiple models simultaneously.

How is Eclaire different from cloud-based AI assistants?

Eclaire runs entirely on your own hardware, ensuring complete privacy and data sovereignty. Your data never leaves your control, and you're not dependent on external services or subject to their terms and privacy policies.

More in Task Management

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…