Open-Source AI Productivity Desktop — Project-Centric, Multi-Agent, Local-First
Each 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.
💬 AI Secretary | 📁 Independent Projects | 🔗 Project Linking | 🤖 Multi-Agent | 🎨 Canvas | 📧 Email | 📅 Calendar | 📋 Tasks
One 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.
📥 Download for macOS / Windows / Linux
⚠️ 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.
OpenLoaf 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.
A 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.
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.
You (the Boss)
│
▼
Secretary Agent (Main Window — your personal assistant)
│
├── Simple tasks → handles directly
├── Single-project tasks → spawns a Project Agent
└── Cross-project tasks → spawns multiple Project Agents in parallel
│
└── Project Agent (Project Window)
│
└── Worker Agents (explore, plan, code...)
Main Window — your command center: - AI Secretary for global tasks (calendar, email, cross-project queries) - Activity timeline showing recent projects, conversations, and canvases - Project grid to browse and open projects
Project Window — each project gets its own: - Dedicated AI assistant with project-specific memory and skills - File explorer, terminal, task board, canvas - Links to other projects (their memory and skills are auto-injected)

OpenLoaf'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:
| Agent | Role | Scope |
|---|---|---|
| Secretary | Your personal assistant in the main window | Global: calendar, email, project routing, cross-project queries |
| Project Agent | Dedicated assistant per project | Project: files, code, docs, terminal, tasks |
| Worker Agents | Specialized sub-agents spawned on demand | Focused: explore, plan, code, review |
The 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.
Each project opens in its own window (Electron) or browser tab (web). No context switching — work on multiple projects simultaneously with full isolation.
Projects 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.
Any project can link to any other project. When linked: - The linked project's memory is injected into the current project's AI context - The linked project's skills become available to the current project's agent - Perfect for sharing a knowledge base, design system docs, or coding standards across multiple projects
Three-level memory hierarchy:
| Level | Path | Purpose |
|---|---|---|
| User | ~/.openloaf/memory/ |
Personal preferences, habits, global context |
| Project | <projectPath>/.openloaf/memory/ |
Project-specific architecture decisions, conventions |
| Linked Projects | Auto-loaded from linked projects | Shared knowledge (e.g., coding standards, API docs) |
Skills follow the same pattern — global skills plus project-specific skills, all discoverable by AI agents at runtime.
Skills are reusable Markdown workflows defined by a SKILL.md file. Put them in ~/.agents/skills/ for global reuse or in <projectPath>/.agents/skills/ for project-specific behavior, and agents can load the instructions plus related tool dependencies on demand.
OpenLoaf 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 <projectPath>/.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.
Multi-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.

A 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.

Everything in one app — no more window-switching:
~/.openloaf/). Bring your own API keys. No telemetry, no tracking.OpenLoaf'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.
~/.openloaf/). Nothing uploaded to cloud servers.corepack enable)# Clone the repository
git clone https://github.com/OpenLoaf/OpenLoaf.git
cd OpenLoaf
# Install dependencies
pnpm install
# Initialize the database
pnpm run db:migrate
# Start the development environment (Web + Server)
pnpm run dev
Open http://localhost:3001. For the desktop app: pnpm run desktop.
┌────────────────────────────────────────────────────┐
│ OpenLoaf │
│ │
│ Main Window │
│ ├── Secretary Agent (global AI assistant) │
│ ├── Activity Timeline (recent history) │
│ ├── Project Grid (all projects by type) │
│ ├── Calendar, Email, Canvas (global features) │
│ └── Settings │
│ │
│ Project Window (one per project) │
│ ├── Project Agent (project-scoped AI) │
│ ├── File Tree, Terminal, Search │
│ ├── Task Board, Canvas │
│ ├── Linked Projects (shared memory/skills) │
│ └── Project Settings & Skills │
│ │
│ Data Layer │
│ ├── ~/.openloaf/memory/ (user memory) │
│ ├── ~/.openloaf/config.json (project registry) │
│ ├── ~/.openloaf/openloaf.db (SQLite database) │
│ ├── <project>/.openloaf/memory/ (project memory) │
│ └── <project>/.agents/skills/ (project skills) │
└──────────────────────────────────────────────────────┘
apps/
web/ — Next.js 16 frontend (static export, React 19)
server/ — Hono backend, tRPC API
desktop/ — Electron 40 desktop shell
packages/
api/ — tRPC router types & shared API logic
db/ — Prisma 7 database schema (SQLite)
ui/ — shadcn/ui component library
config/ — Shared env utilities & path resolution
| Area | Technology |
|---|---|
| Frontend | Next.js 16 / React 19 / Tailwind CSS 4 |
| Backend | Hono + tRPC / Prisma + SQLite |
| Desktop | Electron 40 |
| Editor | Plate.js |
| AI | Vercel AI SDK (OpenAI / Claude / Gemini / DeepSeek / Qwen / Grok / Ollama) |
| Collaboration | Yjs |
| Canvas | ReactFlow |
| Tooling | Turborepo + pnpm monorepo |
$ claude mcp add OpenLoaf \
-- python -m otcore.mcp_server <graph>