Monorepo for the canvas desktop overlay and related UI integrations
0
stars
1,269
commits
TypeScript
primary language
Sep 10, 2026
updated
Monorepo for the Canvas UI(OS) client apps and the shared packages they are built on. The server (canvas-server) lives in its own repository and consumes the shared packages
apps/
cli Canvas CLI (bun-compiled binaries)
desktop Tauri desktop app (frontend builds in CI; Rust bundle needs the Tauri toolchain)
browser-extension Chromium + Firefox extension (esbuild)
shell bash client — not an npm package, pnpm skips it
web web UI (vite/react; prebuilt artifact consumed by canvas-server)
packages/
protocol wire contract: envelope, error codes, routes, events
schemas document schema ids, versions, builders
api-client ergonomic REST client over protocol
integrations/
kde desktop share bridge: Dolphin "Send to Canvas" + selected-text capture
apps/cli — Canvas CLI (bun-compiled binaries)apps/desktop — Tauri desktop appapps/browser-extension — Chromium + Firefox extensionapps/web — web UI (vite/react)pnpm install
pnpm test # package test suites (node --test)
pnpm run lint # root eslint over packages/ + per-app lint
pnpm run build # per-package dev builds (apps/cli → bun compile)
pnpm is deliberate: its strict node_modules makes an undeclared dependency an
install-time error, which is the property that keeps packages/* independently
installable. Do not add dependencies that only work because something else
hoisted them.
Canvas is backend-first: pipe your data sources in, mount context-aware apps
(or a context as a filesystem), and let a context switch update everything
bound to it. Until the Tauri desktop app covers this natively, small bridges
in integrations/ hook the OS into the same REST pipeline the web UI uses:
integrations/kde/ — "Send to Canvas" in Dolphin's context menu (KIO
service menu), plus canvas-share --selection for filing any highlighted
text (a note, or a link when it's a bare URL) via a global shortcut or
Klipper action. Stdlib-python + a .desktop file; ./install.sh, then set
the API token in ~/.config/canvas/share.conf. See its README for why the
KDE Share submenu (Purpose) needs a compiled plugin — that, a
Nautilus/GNOME equivalent, and PWA share_target (already live for
Android/ChromeOS installs of the web UI) are the surrounding pieces.Everything in this repository is available under the AGPL-3.0-or-later — see LICENSE and NOTICE — but the two halves differ beyond that:
apps/* are AGPL-only, for everyone, permanently. No commercial
licence is offered for the client applications, to anyone, and none is
planned: the Canvas clients stay free software in all cases. Contributions
need only a DCO sign-off (git commit -s).packages/* are part of the dual-licensed Canvas engine (AGPL-3.0-or-later
or a commercial licence), alongside canvas-server, canvas-synapsd,
canvas-stored, canvas-inferd and canvas-agentd. Contributions are
asked for under the one-time Canvas CLA.See CONTRIBUTING.md here and the server's COMMERCIAL.md for the commercial side.
Packages use the @augmentd-labs/canvas-* scope — the product brands as Canvas OS; the
GitHub org login is unrelated plumbing and npm scopes are independent of it.
The augmentd-labs npm org is claimed; nothing here publishes yet.
Distribution plan: workspace links inside the monorepo (forever), file:
links to sibling checkouts during the transition, GitHub Release tarballs
(pnpm pack per package, attached to a tag) once canvas-server's CI/Docker
needs fetchable artifacts, and public npmjs when third-party adoption starts. GitHub Packages is deliberately not used: it
requires an auth token even for public installs and chains the scope to the
org name.
TypeScript
63.6%
JavaScript
24.7%
CSS
6.2%
Shell
2.2%
Python
1.6%
HTML
1.2%
Monorepo for the canvas desktop overlay and related UI integrations
0
stars
1,269
commits
TypeScript
primary language
Sep 10, 2026
updated
Monorepo for the Canvas UI(OS) client apps and the shared packages they are built on. The server (canvas-server) lives in its own repository and consumes the shared packages
apps/
cli Canvas CLI (bun-compiled binaries)
desktop Tauri desktop app (frontend builds in CI; Rust bundle needs the Tauri toolchain)
browser-extension Chromium + Firefox extension (esbuild)
shell bash client — not an npm package, pnpm skips it
web web UI (vite/react; prebuilt artifact consumed by canvas-server)
packages/
protocol wire contract: envelope, error codes, routes, events
schemas document schema ids, versions, builders
api-client ergonomic REST client over protocol
integrations/
kde desktop share bridge: Dolphin "Send to Canvas" + selected-text capture
apps/cli — Canvas CLI (bun-compiled binaries)apps/desktop — Tauri desktop appapps/browser-extension — Chromium + Firefox extensionapps/web — web UI (vite/react)pnpm install
pnpm test # package test suites (node --test)
pnpm run lint # root eslint over packages/ + per-app lint
pnpm run build # per-package dev builds (apps/cli → bun compile)
pnpm is deliberate: its strict node_modules makes an undeclared dependency an
install-time error, which is the property that keeps packages/* independently
installable. Do not add dependencies that only work because something else
hoisted them.
Canvas is backend-first: pipe your data sources in, mount context-aware apps
(or a context as a filesystem), and let a context switch update everything
bound to it. Until the Tauri desktop app covers this natively, small bridges
in integrations/ hook the OS into the same REST pipeline the web UI uses:
integrations/kde/ — "Send to Canvas" in Dolphin's context menu (KIO
service menu), plus canvas-share --selection for filing any highlighted
text (a note, or a link when it's a bare URL) via a global shortcut or
Klipper action. Stdlib-python + a .desktop file; ./install.sh, then set
the API token in ~/.config/canvas/share.conf. See its README for why the
KDE Share submenu (Purpose) needs a compiled plugin — that, a
Nautilus/GNOME equivalent, and PWA share_target (already live for
Android/ChromeOS installs of the web UI) are the surrounding pieces.Everything in this repository is available under the AGPL-3.0-or-later — see LICENSE and NOTICE — but the two halves differ beyond that:
apps/* are AGPL-only, for everyone, permanently. No commercial
licence is offered for the client applications, to anyone, and none is
planned: the Canvas clients stay free software in all cases. Contributions
need only a DCO sign-off (git commit -s).packages/* are part of the dual-licensed Canvas engine (AGPL-3.0-or-later
or a commercial licence), alongside canvas-server, canvas-synapsd,
canvas-stored, canvas-inferd and canvas-agentd. Contributions are
asked for under the one-time Canvas CLA.See CONTRIBUTING.md here and the server's COMMERCIAL.md for the commercial side.
Packages use the @augmentd-labs/canvas-* scope — the product brands as Canvas OS; the
GitHub org login is unrelated plumbing and npm scopes are independent of it.
The augmentd-labs npm org is claimed; nothing here publishes yet.
Distribution plan: workspace links inside the monorepo (forever), file:
links to sibling checkouts during the transition, GitHub Release tarballs
(pnpm pack per package, attached to a tag) once canvas-server's CI/Docker
needs fetchable artifacts, and public npmjs when third-party adoption starts. GitHub Packages is deliberately not used: it
requires an auth token even for public installs and chains the scope to the
org name.
TypeScript
63.6%
JavaScript
24.7%
CSS
6.2%
Shell
2.2%
Python
1.6%
HTML
1.2%