Skip to content

Architecture

Genbeya is decomposed by volatility, following the iDesign Method: each layer hides one thing that is likely to change, and calls only go down.

Backend (plain TypeScript)

Shell: Electron, Deno Desktop or Tauri

Client (Angular, in the webview)

manager calls

Features: wiki, tasks, code, changes, history, settings, onboarding

Session, dialogs, hotkeys

Platform connector

Bridge: RPC envelope, window, dialogs

Managers: workspace, content, version control, terminal

Engines: wiki, tasks, settings, links, search, agents, rebase, sample

Resource access: hosts, Git, files, content, preferences

Machine port

Node platform

Tauri platform: Rust commands

Backend (plain TypeScript)

Shell: Electron, Deno Desktop or Tauri

Client (Angular, in the webview)

manager calls

Features: wiki, tasks, code, changes, history, settings, onboarding

Session, dialogs, hotkeys

Platform connector

Bridge: RPC envelope, window, dialogs

Managers: workspace, content, version control, terminal

Engines: wiki, tasks, settings, links, search, agents, rebase, sample

Resource access: hosts, Git, files, content, preferences

Machine port

Node platform

Tauri platform: Rust commands

LayerFolderHidesMay use
Contractssrc/contracts/Nothing: the types every layer agrees on, the RPC envelope and the shell bridges—
Utilitiessrc/utilities/Path rules, hashing, queues, tree building, version numberscontracts
Enginessrc/engines/The rules for tasks and their comments and activity, wiki pages, settings, link rewriting, search results, interactive rebases and the AI agent files, and the sample repository’s content. Pure functions, no I/Ocontracts, utilities
Resource accesssrc/access/Where repositories live (local, WSL, SSH), how Git is called, how files and preferences are storedcontracts, utilities, the Machine port
Managerssrc/managers/The use cases: open a repository, save a page, commit. One per area of changeengines, access
Platformssrc/platforms/The machine itself: Node’s fs, child_process and node-pty, or Tauri’s Rust commandscontracts
Shellssrc/shells/The desktop runtime: window, IPC, menus, packagingeverything below
Clientsrc/client/The user interfacecontracts only; reaches the managers through its platform connector

ESLint enforces the table: a layer that imports from a layer it may not use fails the lint, and node:* modules are only allowed in platforms and shells.

Within the client, features use the core services and the generic building blocks in ui/ (dialogs, trees, menus, the guided tour); only core/ talks to the platform connector.

The Demo that runs in a browser has no shell and no machine: its connector runs managers of its own (src/managers/demo/) in the page, on Git repositories simulated in memory (src/access/memory/), with the same engines.

PageCovers
ManagersWhat the backend can do, call by call: snapshots, operations that stop, comments, search, moving pages, writes
HostsRepositories on this computer, on WSL and over SSH, and their terminals
Content branchKeeping the wiki, the tasks or the settings on a shared branch
RuntimesElectron, Tauri and Deno Desktop compared, with measurements
DemoGenbeya in a browser tab, on repositories in memory: how it works, what it simulates, and why
SecurityHow the app protects itself from the repositories it shows