{"id":46178108,"url":"https://github.com/openloaf/openloaf","last_synced_at":"2026-04-02T14:01:27.597Z","repository":{"id":340804968,"uuid":"1112160661","full_name":"OpenLoaf/OpenLoaf","owner":"OpenLoaf","description":"🍞Open-source, local-first AI workspace with Agents, multi-model chat (GPT/Claude/Gemini/DeepSeek), Notion-like docs, AI image \u0026 video generation, email, calendar \u0026 terminal. Your data never leaves your device. AI 工作台：智能代理 + 多模型对话 + 文档管理 + AI 生图/视频 + 邮件/日历/终端","archived":false,"fork":false,"pushed_at":"2026-03-24T10:51:11.000Z","size":149483,"stargazers_count":28,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-25T05:18:59.579Z","etag":null,"topics":["ai","chat","claude","deepseek","desktop","gemini","gui","image-generation","jimeng","llm","notion","openclaw","viedo-generation","workspace"],"latest_commit_sha":null,"homepage":"https://openloaf.hexems.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenLoaf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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":".github/CLA.md"}},"created_at":"2025-12-08T08:32:33.000Z","updated_at":"2026-03-24T10:42:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/OpenLoaf/OpenLoaf","commit_stats":null,"previous_names":["openloaf/openloaf"],"tags_count":76,"template":false,"template_full_name":null,"purl":"pkg:github/OpenLoaf/OpenLoaf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenLoaf%2FOpenLoaf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenLoaf%2FOpenLoaf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenLoaf%2FOpenLoaf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenLoaf%2FOpenLoaf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenLoaf","download_url":"https://codeload.github.com/OpenLoaf/OpenLoaf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenLoaf%2FOpenLoaf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31307460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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","chat","claude","deepseek","desktop","gemini","gui","image-generation","jimeng","llm","notion","openclaw","viedo-generation","workspace"],"created_at":"2026-03-02T19:14:45.358Z","updated_at":"2026-04-02T14:01:27.319Z","avatar_url":"https://github.com/OpenLoaf.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"apps/web/public/logo.png\" alt=\"OpenLoaf Logo\" width=\"120\" /\u003e\n  \u003ch1\u003eOpenLoaf\u003c/h1\u003e\n  \u003cp\u003e\u003cstrong\u003eOpen-Source AI Productivity Desktop — Project-Centric, Multi-Agent, Local-First\u003c/strong\u003e\u003c/p\u003e\n  \u003cp\u003eEach project gets its own AI agent team, memory, and skills. Projects link to share knowledge. A Secretary Agent orchestrates everything. The agent runtime, memory system, skills loading, and tool routing are native OpenLoaf capabilities - not a thin wrapper around Claude Code. Your data never leaves your device.\u003c/p\u003e\n\n  \u003cp\u003e💬 AI Secretary \u0026nbsp;|\u0026nbsp; 📁 Independent Projects \u0026nbsp;|\u0026nbsp; 🔗 Project Linking \u0026nbsp;|\u0026nbsp; 🤖 Multi-Agent \u0026nbsp;|\u0026nbsp; 🎨 Canvas \u0026nbsp;|\u0026nbsp; 📧 Email \u0026nbsp;|\u0026nbsp; 📅 Calendar \u0026nbsp;|\u0026nbsp; 📋 Tasks\u003c/p\u003e\n\n  \u003cblockquote\u003e\u003cstrong\u003eOne app, multiple project windows. Each project has its own AI team. Link projects to share knowledge. A Secretary Agent ties it all together — 100% local.\u003c/strong\u003e\u003c/blockquote\u003e\n\n  \u003ca href=\"https://github.com/OpenLoaf/OpenLoaf/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-AGPLv3-blue.svg\" alt=\"License\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/OpenLoaf/OpenLoaf/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/OpenLoaf/OpenLoaf?label=latest\" alt=\"Release\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-brightgreen\" alt=\"Platform\" /\u003e\n\n  \u003cbr /\u003e\u003cbr /\u003e\n  \u003ca href=\"https://github.com/OpenLoaf/OpenLoaf/releases/latest\"\u003e📥 Download for macOS / Windows / Linux\u003c/a\u003e\n  \u003cbr /\u003e\u003cbr /\u003e\n  \u003cstrong\u003eEnglish\u003c/strong\u003e | \u003ca href=\"docs/README.md\"\u003e简体中文\u003c/a\u003e | \u003ca href=\"docs/README_ja.md\"\u003e日本語\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n\u003e **⚠️ This project is in active development. Features and APIs may change — use in production with caution.** Encountered a bug or have an idea? Submit feedback via the app's built-in feedback button.\n\n---\n\n## About\n\nOpenLoaf is a local-first AI productivity desktop app built around **projects as independent workspaces**. Each project opens in its own dedicated window with a full-featured environment: AI assistant, file tree, terminal, task board, and canvas.\n\nA **Secretary Agent** lives in the main window as your personal assistant — it can answer questions, manage your calendar and email, and route complex tasks to the right project's AI agent. For cross-project work, projects **link** to each other to share memory and skills.\n\n\u003e **Built natively into OpenLoaf:** the Secretary / Project / Worker agent system, project memory injection, skills discovery, runtime tool execution, and multi-window orchestration are all part of OpenLoaf's own product architecture - not a Claude Code reskin or thin wrapper.\n\n### How It Works\n\n```\nYou (the Boss)\n  │\n  ▼\nSecretary Agent (Main Window — your personal assistant)\n  │\n  ├── Simple tasks → handles directly\n  ├── Single-project tasks → spawns a Project Agent\n  └── Cross-project tasks → spawns multiple Project Agents in parallel\n        │\n        └── Project Agent (Project Window)\n              │\n              └── Worker Agents (explore, plan, code...)\n```\n\n**Main Window** — your command center:\n- AI Secretary for global tasks (calendar, email, cross-project queries)\n- Activity timeline showing recent projects, conversations, and canvases\n- Project grid to browse and open projects\n\n**Project Window** — each project gets its own:\n- Dedicated AI assistant with project-specific memory and skills\n- File explorer, terminal, task board, canvas\n- Links to other projects (their memory and skills are auto-injected)\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/overview.png\" alt=\"OpenLoaf Overview\" width=\"800\" /\u003e\n\u003c/div\u003e\n\n---\n\n## Features\n\n### Multi-Agent Architecture\n\nOpenLoaf's AI isn't a single chatbot — it's a **layered agent system** modeled after how companies work and built specifically for OpenLoaf's project-centric workflow:\n\n| Agent | Role | Scope |\n|-------|------|-------|\n| **Secretary** | Your personal assistant in the main window | Global: calendar, email, project routing, cross-project queries |\n| **Project Agent** | Dedicated assistant per project | Project: files, code, docs, terminal, tasks |\n| **Worker Agents** | Specialized sub-agents spawned on demand | Focused: explore, plan, code, review |\n\nThe Secretary decides the most efficient path — simple questions get answered immediately, project-specific tasks get routed to the right Project Agent, and complex multi-project tasks spawn parallel agents. Agent roles, project routing, memory injection, skills loading, MCP access, and runtime tool execution are first-class OpenLoaf capabilities rather than a thin layer on top of Claude Code.\n\n### Independent Project Windows\n\nEach project opens in its own window (Electron) or browser tab (web). No context switching — work on multiple projects simultaneously with full isolation.\n\nProjects are organized by **user-defined type labels** (e.g., \"code\", \"docs\", \"knowledge base\") which serve as visual groupings in the project grid. Types are just labels — the system treats all projects equally.\n\n### Project Linking\n\nAny project can link to any other project. When linked:\n- The linked project's **memory** is injected into the current project's AI context\n- The linked project's **skills** become available to the current project's agent\n- Perfect for sharing a knowledge base, design system docs, or coding standards across multiple projects\n\n### Memory \u0026 Skills System\n\nThree-level memory hierarchy:\n\n| Level | Path | Purpose |\n|-------|------|---------|\n| **User** | `~/.openloaf/memory/` | Personal preferences, habits, global context |\n| **Project** | `\u003cprojectPath\u003e/.openloaf/memory/` | Project-specific architecture decisions, conventions |\n| **Linked Projects** | Auto-loaded from linked projects | Shared knowledge (e.g., coding standards, API docs) |\n\nSkills follow the same pattern — global skills plus project-specific skills, all discoverable by AI agents at runtime.\n\nSkills are reusable Markdown workflows defined by a `SKILL.md` file. Put them in `~/.agents/skills/` for global reuse or in `\u003cprojectPath\u003e/.agents/skills/` for project-specific behavior, and agents can load the instructions plus related tool dependencies on demand.\n\nOpenLoaf also supports **MCP (Model Context Protocol)** servers. You can connect external tools over `stdio`, `http`, or `sse`, configure them globally in `~/.openloaf/mcp-servers.json` or per project in `\u003cprojectPath\u003e/.openloaf/mcp-servers.json`, and import JSON configs from clients like Claude Desktop, Cursor, VS Code, Cline, or Windsurf to expose GitHub, databases, filesystems, Slack, and more to your agents.\n\n### AI Chat\n\nMulti-model AI chat supporting **OpenAI**, **Anthropic Claude**, **Google Gemini**, **DeepSeek**, **Qwen**, **xAI Grok**, and local models via **Ollama**. AI is aware of your project's full context — file structure, document content, conversation history. Built-in memory lets AI retain knowledge across conversations.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/ai-agent.png\" alt=\"AI Agents\" width=\"800\" /\u003e\n\u003c/div\u003e\n\n### Infinite Canvas\n\nA ReactFlow-based infinite canvas for visual thinking. Supports sticky notes, images, videos, freehand drawing, AI image generation, AI video generation, and image content understanding. Mind maps, flowcharts, and inspiration boards on a single canvas.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/board.png\" alt=\"Infinite Canvas\" width=\"800\" /\u003e\n\u003c/div\u003e\n\n### Built-in Productivity Tools\n\nEverything in one app — no more window-switching:\n\n- **Terminal** — Full terminal emulator. AI agents can run commands with your approval.\n- **Email** — Multi-account IMAP email with AI-powered drafting and summarization.\n- **Calendar** — Native system calendar sync (macOS / Google Calendar). AI-powered scheduling.\n- **File Manager** — Grid/list/column views, drag-and-drop, file preview (images, PDFs, Office, code).\n- **Task Board** — Kanban board (To Do → In Progress → Review → Done) with priority labels and AI-powered task creation.\n- **Rich Text Editor** — Block editor built on [Plate.js](https://platejs.org/) with LaTeX, tables, code blocks, and bi-directional links.\n\n---\n\n## Use Cases\n\n- **Software Development** — Each repo is a project. Link a shared \"coding standards\" project for consistent AI behavior across all repos.\n- **Research \u0026 Writing** — Create a \"references\" project as a knowledge base, link it to your paper projects. AI draws from your curated sources.\n- **Content Creation** — Brainstorm on the canvas, generate images with AI, write in the editor, track deliverables on the task board.\n- **Project Management** — One project per client. Secretary Agent gives you a cross-project overview. Calendar and email keep everything coordinated.\n- **Personal Knowledge Base** — Accumulate notes, web clippings, and journal entries. Link to work projects so AI connects the dots.\n\n---\n\n## Why OpenLoaf\n\n### The Problem\n\n- **Fragmented AI workflows** — One thing done requires jumping between five windows.\n- **No project context** — AI forgets everything between conversations. You re-explain your project every time.\n- **Single-project silos** — Projects can't share knowledge. Your coding standards project can't help your code repos.\n- **Cloud lock-in** — Your data lives on someone else's servers. You can't choose your own AI models.\n\n### OpenLoaf's Approach\n\n- **Self-developed agent stack** — The Secretary / Project / Worker architecture, memory pipeline, skills system, MCP integration, and tool runtime are built natively in OpenLoaf instead of being a Claude Code reskin or wrapper.\n- **Project-centric** — Each project is a self-contained environment with its own AI agent, memory, and skills.\n- **Linked knowledge** — Projects share context through explicit links. A knowledge base enriches every project it's linked to.\n- **Multi-agent routing** — The Secretary Agent handles the orchestration. Simple tasks are fast; complex tasks get the right specialist.\n- **Local-first** — All data stored locally (`~/.openloaf/`). Bring your own API keys. No telemetry, no tracking.\n- **Ready out of the box** — Download, install, go. No servers, databases, or Docker.\n\n### Loaf = Bread + Lounging\n\nOpenLoaf's logo is a bread-shaped sofa. **Loaf** means both \"bread\" and \"to lounge around\" — hand off tedious work to AI while you make the important decisions.\n\n---\n\n## Privacy \u0026 Security\n\n- **100% Local Storage** — All data stored on your filesystem (`~/.openloaf/`). Nothing uploaded to cloud servers.\n- **Bring Your Own Key (BYOK)** — Configure your own AI API keys. API calls go directly from your device to the model provider.\n- **Works Offline** — Core features work fully offline. Use Ollama for a completely air-gapped AI experience.\n- **No Telemetry** — No analytics, no usage data, no tracking. What happens on your device stays on your device.\n- **Open-Source \u0026 Auditable** — Full codebase under AGPLv3. Inspect every line that touches your data.\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n- **Node.js** \u003e= 20\n- **pnpm** \u003e= 10 (`corepack enable`)\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/OpenLoaf/OpenLoaf.git\ncd OpenLoaf\n\n# Install dependencies\npnpm install\n\n# Initialize the database\npnpm run db:migrate\n\n# Start the development environment (Web + Server)\npnpm run dev\n```\n\nOpen [http://localhost:3001](http://localhost:3001). For the desktop app: `pnpm run desktop`.\n\n---\n\n## Architecture\n\n```\n┌────────────────────────────────────────────────────┐\n│                    OpenLoaf                          │\n│                                                      │\n│  Main Window                                         │\n│  ├── Secretary Agent (global AI assistant)           │\n│  ├── Activity Timeline (recent history)              │\n│  ├── Project Grid (all projects by type)             │\n│  ├── Calendar, Email, Canvas (global features)       │\n│  └── Settings                                        │\n│                                                      │\n│  Project Window (one per project)                    │\n│  ├── Project Agent (project-scoped AI)               │\n│  ├── File Tree, Terminal, Search                     │\n│  ├── Task Board, Canvas                              │\n│  ├── Linked Projects (shared memory/skills)          │\n│  └── Project Settings \u0026 Skills                       │\n│                                                      │\n│  Data Layer                                          │\n│  ├── ~/.openloaf/memory/          (user memory)      │\n│  ├── ~/.openloaf/config.json      (project registry) │\n│  ├── ~/.openloaf/openloaf.db      (SQLite database)  │\n│  ├── \u003cproject\u003e/.openloaf/memory/  (project memory)   │\n│  └── \u003cproject\u003e/.agents/skills/    (project skills)   │\n└──────────────────────────────────────────────────────┘\n```\n\n### Project Structure\n\n```\napps/\n  web/          — Next.js 16 frontend (static export, React 19)\n  server/       — Hono backend, tRPC API\n  desktop/      — Electron 40 desktop shell\npackages/\n  api/          — tRPC router types \u0026 shared API logic\n  db/           — Prisma 7 database schema (SQLite)\n  ui/           — shadcn/ui component library\n  config/       — Shared env utilities \u0026 path resolution\n```\n\n### Tech Stack\n\n| Area | Technology |\n|------|------------|\n| Frontend | Next.js 16 / React 19 / Tailwind CSS 4 |\n| Backend | Hono + tRPC / Prisma + SQLite |\n| Desktop | Electron 40 |\n| Editor | Plate.js |\n| AI | Vercel AI SDK (OpenAI / Claude / Gemini / DeepSeek / Qwen / Grok / Ollama) |\n| Collaboration | Yjs |\n| Canvas | ReactFlow |\n| Tooling | Turborepo + pnpm monorepo |\n\n---\n\n## Roadmap\n\n- [x] Multi-agent architecture (Secretary → Project Agent → Workers)\n- [x] Independent project windows\n- [x] Project linking with shared memory/skills\n- [x] User-defined project types with visual grouping\n- [x] Activity timeline in main window\n- [ ] Full web browser access (without desktop app)\n- [ ] Internationalization (i18n) — in progress\n- [ ] Project template marketplace\n- [ ] WPS / Microsoft Office integration\n- [ ] More features coming...\n\n---\n\n## Contributing\n\n1. **Fork** this repository\n2. Create your feature branch: `git checkout -b feature/my-feature`\n3. Commit your changes ([Conventional Commits](https://www.conventionalcommits.org/)):\n   ```bash\n   git commit -m \"feat(web): add dark mode toggle\"\n   ```\n4. Push: `git push origin feature/my-feature`\n5. Open a **Pull Request**\n\n\u003e Before submitting a PR, please read the [Contributing Guide](.github/CONTRIBUTING.md) and [Development Guide](docs/DEVELOPMENT_en.md), and sign the [CLA](.github/CLA.md).\n\n---\n\n## License\n\nOpenLoaf uses dual licensing:\n\n- **Open Source** — [GNU AGPLv3](./LICENSE): Free to use, modify, and distribute. Derivative works must remain open-source.\n- **Commercial** — For closed-source commercial use, contact us for a commercial license.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/OpenLoaf/OpenLoaf/issues\"\u003eBug Reports \u0026 Feature Requests\u003c/a\u003e\n  \u003cbr /\u003e\u003cbr /\u003e\n  \u003csub\u003eOpenLoaf — Your AI, your projects, your data, your device.\u003c/sub\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenloaf%2Fopenloaf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenloaf%2Fopenloaf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenloaf%2Fopenloaf/lists"}