- Introduced new planning files including PROJECT.md, REQUIREMENTS.md, ROADMAP.md, and STATE.md to outline the vision and requirements for SSH multi-context workspaces. - Added ARCHITECTURE.md and CONCERNS.md to detail the codebase structure and address technical debt, known bugs, and security considerations. - Created CONVENTIONS.md to establish coding standards and practices for the project. - Updated .gitignore to exclude demo files and added configuration for planning tools. This commit lays the groundwork for enhancing SSH functionality and user experience in managing multiple workspaces.
5.1 KiB
5.1 KiB
External Integrations
Analysis Date: 2026-02-12
APIs & External Services
SSH/SFTP:
- ssh2 - Direct SSH client implementation for remote session access
- SDK/Client:
ssh2package (Node.js native) - Auth: SSH agent, password, or private key authentication
- Implementation:
src/main/services/infrastructure/SshConnectionManager.ts - Config parsing:
src/main/services/infrastructure/SshConfigParser.ts(reads~/.ssh/config) - File system:
src/main/services/infrastructure/SshFileSystemProvider.ts(SFTP-based) - Purpose: Read Claude Code session files from remote machines
- SDK/Client:
GitHub Releases:
- electron-updater - Auto-update via GitHub release assets
- SDK/Client:
electron-updaterpackage - Configuration:
electron-builder.ymlpublish section - Implementation:
src/main/services/infrastructure/UpdaterService.ts - Update flow: Check → Download → Install (user-confirmed)
- Purpose: Application auto-updates
- SDK/Client:
Data Storage
Databases:
- None - File-based storage only
File Storage:
- Local filesystem only
- Session data:
~/.claude/projects/{encoded-path}/*.jsonl(read-only) - App config:
~/.claude/claude-devtools-config.json(read-write) - Notifications:
~/.claude/claude-devtools-notifications.json(read-write) - Remote access: SFTP via ssh2 (optional)
Caching:
- In-memory LRU cache -
src/main/services/infrastructure/DataCache.ts- Max entries: 50 sessions
- TTL: 10 minutes
- Auto-cleanup: Every 5 minutes
- Disable flag:
CLAUDE_CONTEXT_DISABLE_CACHE=1
Authentication & Identity
Auth Provider:
- SSH authentication (remote access only)
- Methods: SSH agent, password, private key
- Agent discovery:
SSH_AUTH_SOCKenv var, launchctl (macOS), known socket paths - 1Password SSH agent: Supported via
~/Library/Group Containers/2BUA8C4S2C.com.1password/agent.sock - Default keys:
~/.ssh/id_ed25519,~/.ssh/id_rsa,~/.ssh/id_ecdsa - Config:
~/.ssh/configparsing for host aliases, identity files
Git Identity:
- Git identity resolution -
src/main/services/parsing/GitIdentityResolver.ts- Reads
.git/configfor user.name/user.email - Purpose: Display commit author information in UI
- Reads
Monitoring & Observability
Error Tracking:
- None - Local logging only via
@shared/utils/logger.ts
Logs:
- Console output (main process)
- Electron DevTools console (renderer process)
- Log prefix format:
[Domain:Service](e.g.,[Infrastructure:SshConnectionManager])
CI/CD & Deployment
Hosting:
- GitHub - Source repository and release hosting
CI Pipeline:
- GitHub Actions
- Workflow:
.github/workflows/ci.yml- Lint, typecheck, test, build - Workflow:
.github/workflows/release.yml- Build and publish releases
- Workflow:
Build Output:
- Local:
dist-electron/(compiled code),out/(packaged app) - Distribution:
release/directory- macOS: DMG, ZIP
- Windows: NSIS installer
- ASAR: Enabled (app code packaged into single archive)
Environment Configuration
Required env vars:
- None for local mode
Optional env vars:
CLAUDE_CONTEXT_DISABLE_CACHE=1- Disable in-memory cacheNODE_ENV=development- Development modeAPPLE_TEAM_ID- macOS code signing team ID (build-time only)SSH_AUTH_SOCK- SSH agent socket path (runtime, optional)
Secrets location:
- SSH keys:
~/.ssh/directory - SSH agent: External (OS keychain, 1Password)
- App config:
~/.claude/claude-devtools-config.json(user preferences, no secrets)
Webhooks & Callbacks
Incoming:
- None - Desktop application with no server component
Outgoing:
- None - No webhook emissions
IPC Communication
Electron IPC:
- Pattern: Main ↔ Preload ↔ Renderer communication
- Bridge:
contextBridgeinsrc/preload/index.tsexposeswindow.electronAPI - Channels: Defined in
src/preload/constants/ipcChannels.ts - Domains:
- Sessions: Project/session listing, search, detail views
- Repository: Git worktree grouping
- Validation: Path and mention validation
- CLAUDE.md: Configuration file reading
- Config: App settings management
- Notifications: Error notifications and triggers
- Utilities: Shell operations, file watching
- SSH: Remote connection management
- Updater: Update lifecycle events
Real-time Updates:
- File watching:
chokidar-based file system monitoring- Debounce: 100ms
- Events:
file-change,todo-change - Implementation:
src/main/services/infrastructure/FileWatcher.ts - Supports both local and SSH file systems
External File Access
Session Files:
- Location:
~/.claude/projects/{encoded-path}/*.jsonl - Format: JSONL (JSON Lines) with Claude Code conversation data
- Access: Read-only
- Parser:
src/main/services/parsing/SessionParser.ts
Configuration Files:
~/.claude/CLAUDE.md- Global Claude Code configuration{project-root}/CLAUDE.md- Project-specific configuration{directory}/CLAUDE.md- Directory-specific configuration- Reader:
src/main/services/parsing/ClaudeMdReader.ts
Git Worktrees:
- Reads
.git/configfor worktree detection - Grouper:
src/main/services/discovery/WorktreeGrouper.ts
Integration audit: 2026-02-12