{ "schema_version": 1, "diagram_type": "architecture", "meta": { "title": "Gitty runtime architecture", "locale": "en", "quality_profile": "showcase", "repository": { "url": "https://git.cbsk-tech.de/Christoph/GitLite.git", "revision": "47b8544ba889a1357f6578469d2163bbd438ab00", "link_mode": "local-only" } }, "components": [ { "id": "workspace", "type": "frontend", "label": "Workspace UI", "sublabel": "Svelte 5 \u00b7 WebView", "pos": [ 60, 220 ], "size": [ 180, 70 ], "sources": [ { "path": "src/App.svelte", "line": 1 } ] }, { "id": "dispatch", "type": "backend", "label": "Tauri commands", "sublabel": "Invoke / event bridge", "pos": [ 325, 220 ], "size": [ 180, 70 ], "sources": [ { "path": "src-tauri/src/main.rs", "line": 334 } ] }, { "id": "git-service", "type": "backend", "label": "Git operations", "sublabel": "Rust \u00b7 blocking tasks", "pos": [ 590, 220 ], "size": [ 180, 70 ], "sources": [ { "path": "src-tauri/src/git.rs", "line": 577 } ] }, { "id": "git-process", "type": "external", "label": "Git + Git LFS", "sublabel": "Native subprocesses", "pos": [ 855, 220 ], "size": [ 180, 70 ], "sources": [ { "path": "src-tauri/src/git.rs", "line": 415 } ] }, { "id": "repository", "type": "database", "label": "Local repository", "sublabel": "Worktree \u00b7 index \u00b7 .git", "pos": [ 1120, 220 ], "size": [ 180, 70 ], "sources": [ { "path": "src-tauri/src/git.rs", "line": 7436 } ] }, { "id": "hosting-client", "type": "backend", "label": "Hosting adapters", "sublabel": "Issues \u00b7 reviews \u00b7 boards", "pos": [ 325, 70 ], "size": [ 180, 70 ], "sources": [ { "path": "src-tauri/src/integrations.rs", "line": 1 } ] }, { "id": "host-services", "type": "external", "label": "Git hosting", "sublabel": "GitHub \u00b7 GitLab \u00b7 others", "pos": [ 60, 70 ], "size": [ 180, 70 ], "sources": [ { "path": "src-tauri/src/integrations.rs", "line": 1 } ] }, { "id": "ai-client", "type": "backend", "label": "AI assistance", "sublabel": "commit_ai crate", "pos": [ 590, 390 ], "size": [ 180, 70 ], "sources": [ { "path": "src-tauri/crates/commit_ai/src/lib.rs", "line": 1 } ] }, { "id": "ai-endpoint", "type": "external", "label": "Model endpoint", "sublabel": "OpenAI \u00b7 Anthropic \u00b7 custom", "pos": [ 855, 390 ], "size": [ 180, 70 ], "sources": [ { "path": "src-tauri/crates/commit_ai/src/cloud.rs", "line": 1 } ] }, { "id": "keychain", "type": "security", "label": "OS keychain", "sublabel": "Credentials / API keys", "pos": [ 60, 390 ], "size": [ 180, 70 ], "sources": [ { "path": "src-tauri/src/git.rs", "line": 3033 } ] } ], "boundaries": [ { "kind": "security-group", "label": "WebView", "wraps": [ "workspace" ], "pad": 25 }, { "kind": "security-group", "label": "Native application process", "wraps": [ "dispatch", "git-service", "hosting-client", "ai-client" ], "pad": 28 }, { "kind": "region", "label": "OS processes & filesystem", "wraps": [ "git-process", "repository" ], "pad": 28 } ], "connections": [ { "id": "ui-invoke", "from": "workspace", "to": "dispatch", "label": "IPC invoke", "variant": "emphasis" }, { "id": "dispatch-git", "from": "dispatch", "to": "git-service", "label": "Rust call", "variant": "emphasis" }, { "id": "spawn-git", "from": "git-service", "to": "git-process", "label": "spawn", "variant": "emphasis" }, { "id": "git-files", "from": "git-process", "to": "repository", "label": "read / write", "variant": "emphasis" }, { "id": "dispatch-hosting", "from": "dispatch", "to": "hosting-client", "label": "Rust call", "variant": "default", "fromSide": "top", "toSide": "bottom" }, { "id": "hosting-api", "from": "hosting-client", "to": "host-services", "label": "HTTPS API", "variant": "default" }, { "id": "git-ai", "from": "git-service", "to": "ai-client", "label": "diff + notes", "variant": "default", "fromSide": "bottom", "toSide": "top", "labelAt": [ 680, 304 ] }, { "id": "ai-http", "from": "ai-client", "to": "ai-endpoint", "label": "HTTP(S)", "variant": "default" }, { "id": "command-secrets", "from": "dispatch", "to": "keychain", "label": "keyring API", "variant": "security", "fromSide": "bottom", "toSide": "right", "labelAt": [ 300, 425 ] } ], "cards": [ { "dot": "cyan", "title": "Primary path", "items": [ "UI invokes registered commands; Rust runs Git off the async executor. Results return to the UI.", "Git LFS handles large objects. Git uses HTTPS / SSH for fetch, pull, push and clone." ] }, { "dot": "violet", "title": "Supporting runtime", "items": [ "Hosting: GitHub, GitLab, Azure DevOps and Gitea; REST calls use reqwest.", "AI: diffs / notes and API keys are passed to the selected provider through native commands.", "Workspace preferences live in WebView localStorage." ] }, { "dot": "rose", "title": "Trust & external services", "items": [ "IPC crosses into native filesystem and process privileges; CSP is currently null.", "OS keychain also stores hosting credentials. Network endpoints may be cloud or self-hosted.", "Aptabase telemetry and the Windows/macOS update CDN are secondary dependencies; Linux uses package updates." ] } ] }