{"id":33852865,"url":"https://github.com/eclaire-labs/eclaire","last_synced_at":"2026-01-16T09:02:16.570Z","repository":{"id":317199421,"uuid":"1048895278","full_name":"eclaire-labs/eclaire","owner":"eclaire-labs","description":"Local-first, open-source AI assistant for your data. Unify tasks, notes, docs, photos, and bookmarks. Private, self-hosted, and extensible via APIs.","archived":false,"fork":false,"pushed_at":"2026-01-14T01:52:45.000Z","size":5322,"stargazers_count":748,"open_issues_count":0,"forks_count":68,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-01-14T05:49:03.714Z","etag":null,"topics":["ai","ai-assistant","automation","bookmark-manager","bookmarks","data-extraction","document-processing","llm","local-first","note-taking","ocr","on-device-ai","open-source","personal-knowledge-management","privacy","rest-api","self-hosted","task-management","web-archiving"],"latest_commit_sha":null,"homepage":"https://eclaire.co","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclaire-labs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-02T07:28:06.000Z","updated_at":"2026-01-14T01:52:34.000Z","dependencies_parsed_at":"2025-09-29T14:41:54.847Z","dependency_job_id":null,"html_url":"https://github.com/eclaire-labs/eclaire","commit_stats":null,"previous_names":["eclaire-labs/eclaire"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/eclaire-labs/eclaire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclaire-labs%2Feclaire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclaire-labs%2Feclaire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclaire-labs%2Feclaire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclaire-labs%2Feclaire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclaire-labs","download_url":"https://codeload.github.com/eclaire-labs/eclaire/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclaire-labs%2Feclaire/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-assistant","automation","bookmark-manager","bookmarks","data-extraction","document-processing","llm","local-first","note-taking","ocr","on-device-ai","open-source","personal-knowledge-management","privacy","rest-api","self-hosted","task-management","web-archiving"],"created_at":"2025-12-08T18:00:38.075Z","updated_at":"2026-01-16T09:02:16.524Z","avatar_url":"https://github.com/eclaire-labs.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003c!-- README.md --\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://eclaire.co\"\u003e\n    \u003cimg src=\"docs/assets/logo-text.png\" alt=\"Eclaire Logo\" width=\"400\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eECLAIRE\u003c/h1\u003e\n\n\u003ch3 align=\"center\"\u003e\u003cem\u003ePrivacy-focused AI assistant for your data\u003c/em\u003e\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./LICENSE\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/eclaire-labs/eclaire\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/eclaire-labs/eclaire/releases\"\u003e\u003cimg alt=\"Release\" src=\"https://img.shields.io/github/v/release/eclaire-labs/eclaire?sort=semver\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://eclaire.co/docs\"\u003e\u003cimg alt=\"Docs\" src=\"https://img.shields.io/badge/docs-eclaire.co%2Fdocs-informational\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://youtu.be/JiBnoTmev0w\"\u003e\u003cimg alt=\"Watch demo\" src=\"https://img.shields.io/badge/Watch%20demo-YouTube-red?logo=youtube\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\" id=\"demo\"\u003e\n  \u003ca href=\"https://youtu.be/JiBnoTmev0w\" target=\"_blank\" rel=\"noopener\"\u003e\n    \u003cimg\n      src=\"https://github.com/eclaire-labs/eclaire/releases/download/media/eclaire-demo-preview.gif\"\n      alt=\"Eclaire demo preview (click to watch on YouTube)\"\n      width=\"900\"\n    /\u003e\n  \u003c/a\u003e\n  \u003cbr/\u003e\n  \u003csub\u003e\u003cem\u003eClick to watch on YouTube\u003c/em\u003e\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#selecting-models\"\u003eSelecting Models\u003c/a\u003e •\n  \u003ca href=\"#architecture\"\u003eArchitecture\u003c/a\u003e •\n  \u003ca href=\"#development\"\u003eDevelopment\u003c/a\u003e •\n  \u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e •\n  \u003ca href=\"https://eclaire.co/docs\"\u003eDocs\u003c/a\u003e •\n  \u003ca href=\"https://eclaire.co/docs/api\"\u003eAPI\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## ⚠️ Important Notices\n\n\u003e [!IMPORTANT]  \n\u003e **Pre-release / Development Status**  \n\u003e Eclaire is currently in pre-release and under active development.  \nExpect frequent updates, breaking changes, and evolving APIs/configuration.  \n\u003e If you deploy it, please **backup your data regularly** and review release notes carefully before upgrading.\n\n\u003e [!WARNING]  \n\u003e **Security Warning**  \n\u003e Do **NOT** expose Eclaire directly to the public internet.  \n\u003e This project is designed to be self-hosted with privacy and security in mind, but it is **not hardened for direct exposure**.  \n\u003e  \n\u003e We strongly recommend placing it behind additional security layers such as:  \n\u003e - [Tailscale](https://tailscale.com/) or other private networks/VPNs  \n\u003e - [Cloudflare Tunnels](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/)  \n\u003e - A reverse proxy with authentication\n\n---\n\n## Description\n\n**Eclaire** is a local-first, open-source AI that organizes, answers, and automates across tasks, notes, documents, photos, bookmarks and more.\n\nThere 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.\n\nWith 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.\n\n- **Self-hosted**  - runs entirely on your hardware with local models and data storage\n- **Unified data**  - one place where AI can see and connect everything\n- **AI-powered**  - content understanding, search, classification, OCR, and automation\n- **Open source**  - transparent, extensible, and community-driven\n\n### What's New in v0.6.0\n\n- **Unified deployment**: frontend + backend + workers can run in a single container\n- **Simplified Self-Hosting**  - new one-command `setup.sh` flow, plus a streamlined `compose.yaml`\n- **Better AI Support**  - New vision models (including Qwen3-VL), llama.cpp router, improved MLX support.\n- **Modern Frontend**  - Migrated from Next.js to Vite + TanStack Router\n- **SQLite Support**: Full SQLite database support alongside Postgres for simpler workloads\n- **Database Queue Mode**: Support Postgres or SQLite for job processing instead of Redis/BullMQ\n- **New Admin CLI**  - Manage your instance from the command line\n\nSee the [CHANGELOG](./CHANGELOG.md) for full details.\n  \n## Features\n- **Cross-platform**: macOS, Linux and Windows. \n- **Private by default**: By default all AI models run locally, all data is stored locally.\n- **Unified data**: Manage across tasks, notes, documents, photos, bookmarks and more.\n- **AI conversations**: chat with context from your content; see sources for answers; supports streaming and thinking tokens.\n- **AI tool calling**: The assistant has tools to search data, open content, resolve tasks, add comments, create notes, and more\n- **Flexible deployment**: Run as a single unified container or separate services. SQLite or Postgres. Database queue or Redis. *(See [Architecture](#architecture) section below.)*\n- **Full API**: OpenAI-compatible REST endpoints with session tokens or API keys. [API Docs](https://eclaire.co/docs/api)\n- **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](#selecting-models).)*\n- **Model support**: text and vision models from Qwen, Gemma, DeepSeek, Mistral, Kimi, and others. *(See [Selecting Models](#selecting-models).)*\n- **Storage**: all assets (uploaded or generated) live in Postgres or file/object storage.\n- **Integrations**: Telegram (more channels coming).\n- **Documents**: PDF, DOC/DOCX, PPT/PPTX, XLS/XLSX, ODT/ODP/ODS, MD, TXT, RTF, Pages, Numbers, Keynote, HTML, CSV, and more.\n- **Photos/Images**: JPG/JPEG, PNG, SVG, WebP, HEIC/HEIF, AVIF, GIF, BMP, TIFF, and more.\n- **Tasks**: track user tasks or assign tasks for the AI assistant to complete; the assistant add comments to tasks or write to separate docs.\n- **Notes**: plain text or Markdown format. Links to other assets.\n- **Bookmarks**: Fetches bookmarks and creates PDF, Readable and LLM friendly versions. Special handling for Github and Reddit APIs and metadata.\n- **Organization**: Tags, pin, flag, due dates, etc. across all asset types.\n- **Hardware acceleration**: takes advantage of Apple MLX, NVIDIA CUDA, and other platform-specific optimizations.\n- **Mobile \u0026 PWA**: installable PWA; iOS \u0026 Apple Watch via Shortcuts; Android via Tasker/MacroDroid.\n\n## Sample use cases\n- Dictate notes using Apple Watch (or other smartwatch).\n- Save bookmarks to read later; generate clean “readable” and PDF versions.\n- Create readable and PDF versions of websites\n- Extract text from photos and document images (OCR).\n- Bulk-convert photos from HEIC to JPG.\n- Analyze, categorize, and search documents and photos with AI.\n- Create LLM-friendly text/Markdown versions of documents and bookmarks.\n- Save interesting content (web pages, photos, documents) from phone, tablet, or desktop.\n- Ask AI to find or summarize information across your data.\n- Schedule automations (e.g., “Every Monday morning, summarize my tasks for the week.”).\n- Chat with AI from web, mobile, Telegram, and other channels.\n- Process sensitive information (bank, health, etc.) privately on local models.\n- De-clutter your desktop by bulk-uploading and letting AI sort and tag.\n- Migrate data from Google/Apple and other vendors into an open, self-hosted platform under your control.\n\n## Screenshots\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"docs/images/dashboard-dark-fs8.png\"\u003e\u003cimg src=\"docs/images/dashboard-dark-fs8.png\" alt=\"Dashboard View\" width=\"400\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"docs/images/photo-ocr-dark-fs8.png\"\u003e\u003cimg src=\"docs/images/photo-ocr-dark-fs8.png\" alt=\"Photo OCR\" width=\"400\"/\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"docs/images/main-dark-fs8.png\"\u003e\u003cimg src=\"docs/images/main-dark-fs8.png\" alt=\"Main Dashboard\" width=\"400\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"docs/images/assistant-dark-fs8.png\"\u003e\u003cimg src=\"docs/images/assistant-dark-fs8.png\" alt=\"AI Assistant\" width=\"400\"/\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n## Installation\n\n### Prerequisites\n\n- **Docker** and **Docker Compose**\n- **A local LLM server**  - [llama.cpp](https://github.com/ggml-org/llama.cpp) recommended\n\n### Quick Start\n\n```bash\nmkdir eclaire \u0026\u0026 cd eclaire\ncurl -fsSL https://raw.githubusercontent.com/eclaire-labs/eclaire/main/setup.sh | sh\n```\n\nThe script will:\n1. Download configuration files\n2. Generate secrets automatically\n3. Initialize the database (PostgreSQL)\n\nAfter setup completes:\n\n```bash\n# 1. Start your LLM servers (in separate terminals)\n#    Models download automatically on first run if not already cached\nllama-server -hf unsloth/Qwen3-14B-GGUF:Q4_K_XL --ctx-size 16384 --port 11500\nllama-server -hf unsloth/gemma-3-4b-it-qat-GGUF:Q4_K_XL --ctx-size 16384 --port 11501\n\n# 2. Start Eclaire\ndocker compose up -d\n```\nOpen http://localhost:3000 and click \"Sign up\" to create your account.\n\nSee [AI Model Configuration](docs/ai-models.md) to use other AI providers and models.\n\n\n\n### Configuration\n\nConfiguration lives in two places:\n- **`.env`**  - secrets, database settings, ports\n- **`config/ai/`**  - LLM provider URLs and model definitions\n\n\n### Stopping\n\n```bash\ndocker compose down\n```\n\n\n## Selecting Models\n\nEclaire uses AI models for two purposes:\n- **Backend**: Powers the chat assistant (requires good tool calling)\n- **Workers**: Processes documents and images (requires vision capability)\n\n\u003e **Apple Silicon**: Mac users can leverage MLX for optimized local inference. See the [configuration guide](docs/ai-models.md#mlx-on-apple-silicon) for details.\n\nUse the CLI to manage models:\n\n```bash\ndocker compose run --rm eclaire model list\n```\n\nSee [AI Model Configuration](docs/ai-models.md) for detailed setup and model recommendations. \n\n## Architecture\n\nEclaire follows a modular architecture with clear separation between the frontend, backend API, background workers, and data layers.\n\n**📋 [View detailed architecture diagram →](docs/architecture.md)**\n\n### Key Components\n- **Frontend**: Vite web application with React 19, TanStack Router, and Radix UI\n- **Backend API**: Node.js/Hono server with REST APIs\n- **Background Workers**: Job processing and scheduling (runs unified with backend by default)\n- **Data Layer**: PostgreSQL (recommended) or SQLite for persistence; database or Redis for job queue\n- **AI Services**: Local LLM backends (llama.cpp, MLX, LM Studio, etc.) for inference; Docling for document processing\n- **External Integrations**: GitHub and Reddit APIs for bookmark fetching\n\n## Roadmap\n- Support for more data sources and integrations\n- More robust full text indexing and search\n- Better extensibility and plugin system\n- Improved AI capabilities and model support\n- Evals for models and content pipelines\n- More hardening and security\n- Top requests from the community\n\n## Development\n\nFor contributors who want to build from source.\n\n### Additional Prerequisites\n\nBeyond Docker and an LLM server, you'll need:\n\n- **Node.js ≥ 24** with corepack enabled\n- **pnpm** (managed via corepack)\n\n**Document/image processing tools:**\n\n**macOS:**\n```bash\nbrew install --cask libreoffice\nbrew install poppler graphicsmagick imagemagick ghostscript libheif\n```\n\n**Ubuntu/Debian:**\n```bash\nsudo apt-get install libreoffice poppler-utils graphicsmagick imagemagick ghostscript libheif-examples\n```\n\n### Setup\n\n```bash\ngit clone https://github.com/eclaire-labs/eclaire.git\ncd eclaire\ncorepack enable\npnpm setup:dev\npnpm dev\n```\n\nAccess the application:\n- Frontend: http://localhost:3000\n- Backend: http://localhost:3001/health\n\n### Building Docker Locally\n\nTo build and test custom Docker images:\n\n```bash\n./scripts/build.sh\ndocker compose -f compose.yaml -f compose.dev.yaml -f compose.local.yaml up -d\n```\n\n## Contributing\nWe 💙 contributions! Please read the Contributing Guide.\n\n## Security\nSee [SECURITY.md](./SECURITY.md) for our policy.\n\n## Telemetry\nThere 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.\n\n## Community \u0026 Support\nIssues: [GitHub Issues](https://github.com/eclaire-labs/eclaire/issues)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclaire-labs%2Feclaire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclaire-labs%2Feclaire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclaire-labs%2Feclaire/lists"}