Skip to content

CyberCod/DOGSLED

Repository files navigation

Dogsled

Dual-model coding workspace: two Code Puppy sessions flanking a Monaco editor, collaborating on the same project in real time.

Each side panel runs its own Code Puppy session backed by its own model. Pick the model per panel from a dropdown — e.g. DeepSeek on the left, Kimi on the right. When either agent writes to a file, the editor in the middle automatically focuses (or opens) that file so a human can audit the change as it lands. Selected text can be handed off from one panel to the other with a single click; the prompt is wrapped (verify-this-draft going left→right, execute-this-plan going right→left) and pasted into the receiving session.

Prerequisites

  • Rust 1.77+
  • Node.js 22+
  • uv and code-puppy installed via uv tool install code-puppy==0.0.550 (or run on demand with uvx code-puppy -i)
  • OpenRouter API key configured in Code Puppy

Platforms

v1: Windows + Linux. macOS unsupported.

Instance model: one workspace per app window. Renaming/moving the workspace folder orphans snapshot history (the shadow git store is keyed by workspace path hash).

Development

npm install
npm run tauri:dev

On Windows: run.bat (probes Python, sets DOGSLED_CODE_PUPPY / DOGSLED_PYTHON, runs the same tauri:dev).

Build

npm run tauri:build

Test

cd src-tauri
cargo test

Golden tests live in src-tauri/tests/: parser_golden.rs (VT100 → agent-state replay against fixtures) and pty_smoke.rs (portable-pty spawn sanity check). Module-level tests are alongside the code (e.g. session/mod.rs covers fork-on-other-panel).

Architecture (one-liner each)

  • Left / Right panels — xterm.js terminal hosting a Code Puppy PTY. Per-panel model + persona (name, emoji, accent) configured in src-tauri/dogsled.toml.
  • Center editor — Monaco with file tree, tabs, toolbar (Save / Save As / New File / New Folder / Handoff), context menus on tabs and tree, and keyboard shortcuts (Ctrl+S/N/W/Shift-S/Shift-N, F2 rename, Delete).
  • Auto-audit — Rust file watcher emits file-changed events with kind (Create/Modify/Delete/Rename); the editor focuses-or-opens the affected file so the human sees agent writes immediately.
  • Snapshots — per-workspace bare git repo (libgit2) in app data, separate from the project's own .git. Step records can restore_to_step to roll the workspace back.
  • Sessions — fork on cross-panel open; child resumes Code Puppy memory via --resume {.pkl}.

Documentation

About

Dual-model coding workspace: two Code Puppy sessions flanking a Monaco editor, collaborating on the same project with live auto-open-on-change for human auditing.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors