packages/*). For the monorepo overview and the main flow, see the architecture.
All packages are private ("private": true) and published under the @syntheo/* scope. They are not distributed on npm: only apps/desktop and other workspace packages consume them.
Inventory
Internal dependency graph
The dependencies below come from thedependencies fields of the package.json files.
For the Tauri plugins mentioned, see the plugins.
Data access layer
Four packages form the SQLite access stack on the TypeScript side. The app assembles them inapps/desktop/src/db/index.ts.
@syntheo/db-runtime
- Path:
packages/db-runtime - Role: defines the transport contracts, without implementation.
- Main API: types
DrizzleProxyClient,LiveQueryClient,TransactionClient,QueryEvent,ProxyQueryMethod(run,all,get,values),Unsubscribe. - Internal dependencies: none.
- Affected doc pages: none.
@syntheo/db
- Path:
packages/db - Role: thin Drizzle adapter on top of a
DrizzleProxyClientclient (seepackages/db/AGENTS.md). - Main API:
createDb(client), the schema exported by./schemaand the re-exported Drizzle helpers (eq,and,or,desc,asc,sql,count,max,ne). - Tables declared in
packages/db/src/schema.ts:sessions,session_documents,transcripts,session_participants,action_items,session_attachments,humans,organizations,workspaces,folders,folder_attachments,tags,session_tags,entity_mentions,chat_groups,chat_messages,daily_notes,templates,app_settings,synced_preferences, as well as tables for local library connections, attachment state and import migration. - Internal dependencies:
db-runtime. - Affected doc pages: /en/data-and-privacy (what is stored locally), /en/architecture (local storage).
@syntheo/db-react
- Path:
packages/db-react - Role: connects reactive queries to React.
- Main API:
createUseLiveQuery(client)andcreateUseDrizzleLiveQuery(client). - Internal dependencies:
db-runtime. - Affected doc pages: none.
@syntheo/db-tauri
- Path:
packages/db-tauri - Role: implements the transport through the commands and the subscription of the
plugins/dbTauri plugin. - Main API:
tauriLiveQueryClient(bothLiveQueryClientandDrizzleProxyClient) andtauriTransactionClient. - Internal dependencies:
db-runtime,@syntheo/plugin-db. - Affected doc pages: none.
@syntheo/editor
- Path:
packages/editor - Role: rich editor based on ProseMirror, used for note bodies, chat input and prompts.
- Internal dependencies:
store,ui,utils,@syntheo/plugin-opener2. - Affected doc pages: /en/notes, /en/chat, /en/meetings.
The
packages/editor/daily/cfm.md file is an inherited design note (“Char-Flavored-Markdown”); no code imports it.
@syntheo/store
- Path:
packages/store - Role: Zod schemas shared between the app and the editor, and conversion helpers for storage.
- Main API:
templateSectionSchema,chatMessageStatusSchema,taskStatusSchema,wordSchema,speakerHintSchema,aiProviderSchema(typessttandllm),jsonObject, typeToStorageType. Exports.,./schemaand./shared. - Internal dependencies: none.
- Consumers in
apps/desktop: summary templates (src/templates/*), STT and LLM connections (src/stt/*,src/ai/hooks/useLLMConnection.ts), persisted chat messages (src/chat/store/persisted-messages.ts). - Affected doc pages: /en/ai-setup (provider fields), /en/customize-summaries (template sections), /en/chat.
@syntheo/provider-validation
- Path:
packages/provider-validation - Role: validates an inference server’s address and checks its credentials before saving it.
- Main API:
validateProviderBaseUrl,verifyProviderCredentials,isPrivateHost,usesDeferredProviderAuthentication,providerCredentialIdentity, classProviderCredentialError, typeProviderCredential. - Internal dependencies: none (external dependency
js-sha256). - Consumers in
apps/desktop:src/settings/providers.tsand the connection cards undersrc/settings/ai/*. - Affected doc pages: /en/ai-setup, /en/offline, /en/security. Check these pages if the address rules (HTTPS, private hosts) or authentication rules change.
@syntheo/utils
- Path:
packages/utils - Role: utilities with no workspace dependency.
- Exports:
.:cn(Tailwind class merging), re-export ofdate-fnsandTZDate,safeParseDate,parseEventInstant,safeFormat../folders:normalizeFolderPath,folderDisplayName,collectFolderPaths,folderPathMatchesFilter,childFolderPath,ancestorFolderPaths../session: session editor tabs (computeCurrentNoteTab,createEditorTabs) and summary documents (hasSummaryContent,defaultSummaryDocumentId,resolveSummaryDocument,visibleSummaryDocuments)../summary-eligibility:getSummaryEligibility, thresholdsMIN_WORDS_FOR_SUMMARY(5) andMIN_TRANSCRIPT_CHARACTERS_FOR_SUMMARY(160).
- Affected doc pages: /en/meetings (summary trigger), /en/notes (folders).
Interface and design
@syntheo/design-system
- Path:
packages/design-system - Role: design tokens in TypeScript and CSS.
- Main API:
PALETTE_IDS(cha,fuji,enji),DEFAULT_PALETTE(cha),isPaletteId,DesignPalettes,DesignColors,DesignSpacing,DesignRadius,DesignTypography,DesignControl, stylesheet./tokens.css. Theassets/brandfolder contains the brand assets. - Internal dependencies: none.
- Consumers:
ui,apps/desktop(includingsrc/settings/appearance/palette.tsx). - Affected doc pages: none. No page describes the appearance palettes to date.
@syntheo/ui
- Path:
packages/ui - Role: shared component library (shadcn configuration in
components.json). - Main API:
./components/ui/*(accordion, button, card, checkbox, command, dialog, dropdown menu, popover, select, toast, tooltip, etc.),./components/*(avatar, icons, logo),./hooks/*(use-mount-effect,use-squircle),./lib/*,./globals.css,./tailwind.config,./postcss.config. - Internal dependencies:
design-system,utils. - Affected doc pages: none.
@syntheo/changelog
- Path:
packages/changelog - Role: contains the release notes (
content/desktop/<version>.md, one per version) and renders them in the app. - Main API:
ChangelogContent,changelogComponents,parseFrontmatter,processContent. Export./processfor processing only. - Internal dependencies:
utils. - Consumers:
apps/desktop/src/changelog/*. The app reads the latest version through a Vite virtual module (virtual:changelog) and downloads older versions. - Affected doc pages: none. The Mintlify site has no release notes page.
Resources for agents
Three locations carry the same agent skill. Only one is written by hand.
The
scripts/publish-syntheo-skill.mjs script generates docs/skill.md and the mirrors in agent-plugins/syntheo/ from skills/syntheo/. With --check, it fails if one of the copies has drifted. So always edit skills/syntheo/, then run the script again.
The skill’s content depends on the contract of the CLI (apps/cli/src/cli.rs) and of the MCP server (apps/cli/src/mcp/).
Affected doc pages: /en/agents/overview, /en/agents/skills, /en/agents/cli, /en/agents/mcp, /en/reference/cli, /en/reference/mcp, /en/reference/errors, /en/installation.