Choosing packages
Each package installs on its own, so an app installs only the ones it needs.
By what you build
| You build | Start with | Add when you need |
|---|---|---|
| The window of a desktop app | Shell, UI | Service for a background process |
| A chat with a coding agent | Agents in the backend, Agent views in the window | Intelligent UI for blocks of UI in replies |
| A code editor | Editor views | LSP for a language server, Merge for conflicts |
| A terminal pane | Terminal | UI for the theme it reads |
| A database browser | Database | |
| Charts of usage or metrics | Charts | |
| A canvas with drawings, diagrams or plans | Drawing, Diagram, Plan |
How they fit together
Each package plays one of four roles:
- A contract package holds shapes that cross a process boundary, with no runtime of its own: Agent contracts.
- A host runs in the backend, in Node or Bun: Agents, the host of Database and Service.
- A view package draws React in the window: UI, Agent views, Editor views, Charts and Terminal.
- A core has no DOM, so a backend, a test and a view can all read it: Editor core, Merge, Drawing, Diagram and Plan.
Every view draws on the theme of @adecore/ui. The editor goes from a document model without a DOM (Editor core), through a DOM view (Editor), to React editors with language features (Editor views).
Interface
| Package | What it holds |
|---|---|
UI (@adecore/ui) | React components, a theme, formatters and a settings dialog |
Charts (@adecore/charts) | Series, heatmaps, timelines and sparklines, drawn as SVG on the theme |
Terminal (@adecore/terminal) | A terminal pane on xterm.js in the colors of the theme, fed by the app through a handle |
Agents
| Package | What it holds |
|---|---|
Agent contracts (@adecore/agent-contracts) | Schemas and port contracts for agent chats, provider accounts, models and usage |
Agents (@adecore/agents) | Chat hosts for Node and Bun over provider CLIs, with accounts, usage and task coordination |
Agent views (@adecore/agents-react) | React views for agent chats: threads, the composer, approvals, provider accounts and usage |
Intelligent UI (@adecore/intelligent-ui) | The component catalog, compiler and bounded interpreter for blocks of UI in an agent's reply |
Editor
| Package | What it holds |
|---|---|
Editor core (@adecore/editor-core) | The document model: text, selections, undo history, search, folding and editing commands, with no DOM |
Editor (@adecore/editor) | The DOM view that draws a document model |
Editor views (@adecore/editor-react) | React editors with language features, popups and change review over an injected language service |
LSP (@adecore/lsp) | A Language Server Protocol client with no DOM, and the language service interface the editor asks |
Merge (@adecore/merge) | Line diffs, three-way merge blocks and conflict resolution for text |
Platform
| Package | What it holds |
|---|---|
Shell (@adecore/shell) | The main process of an Electron app: its menu, its updater, its windows and the guards around its page |
Service (@adecore/service) | Definitions and managers for a launchd job on macOS, a systemd user service on Linux or a scheduled task on Windows |
Database (@adecore/database) | Views to browse, query and edit SQLite and MySQL databases, a host for the backend and a native helper |
Utils (@adecore/utils) | Waits, deadlines, atomic file writes and path checks, with no dependencies |
Canvas
| Package | What it holds |
|---|---|
Drawing (@adecore/drawing) | Drawing schemas, geometry, paths, SVG export and reading order |
Diagram (@adecore/diagram) | Directed graphs on top of drawing, with layered layout and SVG export |
Plan (@adecore/plan) | Plan trees with atomic operations, permissions for people and agents, and Markdown |