{"id":50947020,"url":"https://github.com/maxiloemmmm/gsdv","last_synced_at":"2026-06-30T23:00:17.801Z","repository":{"id":361599183,"uuid":"1214273775","full_name":"maxiloEmmmm/gsdv","owner":"maxiloEmmmm","description":"ai workspace all in one","archived":false,"fork":false,"pushed_at":"2026-06-27T07:16:51.000Z","size":7565,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-27T09:08:10.829Z","etag":null,"topics":["ai","all-in-one","codex","git","memo","rest","terminal","workflow","workspace"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxiloEmmmm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-18T10:52:11.000Z","updated_at":"2026-06-27T07:16:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/maxiloEmmmm/gsdv","commit_stats":null,"previous_names":["maxiloemmmm/gsdv"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/maxiloEmmmm/gsdv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxiloEmmmm%2Fgsdv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxiloEmmmm%2Fgsdv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxiloEmmmm%2Fgsdv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxiloEmmmm%2Fgsdv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxiloEmmmm","download_url":"https://codeload.github.com/maxiloEmmmm/gsdv/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxiloEmmmm%2Fgsdv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34986248,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","all-in-one","codex","git","memo","rest","terminal","workflow","workspace"],"created_at":"2026-06-17T21:05:01.463Z","updated_at":"2026-06-30T23:00:17.766Z","avatar_url":"https://github.com/maxiloEmmmm.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gsdv\n\n`gsdv` is a native desktop workspace for agent-centered development.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/examples/ig_023f35ae25010aa7016a1cf1395a608191b1eecb31267809ca.png\" alt=\"gsdv agent workspace\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eAgent-first workspace shell\u003c/strong\u003e\u003cbr /\u003e\n  Keep the active agent, subagents, project notes, and review context in one persistent desktop surface.\n\u003c/p\u003e\n\n| Work-flow keeps project intent editable | Reviewer keeps implementation changes inspectable |\n| --- | --- |\n| ![gsdv work-flow task view](assets/examples/ig_03fac067c40a3437016a1cf9ab82a08191b8c6cf2bf5bce090.png) | ![gsdv reviewer diff view](assets/examples/ig_03fac067c40a3437016a1cfa2c3f888191b77212ab30a26699.png) |\n\n## Showcase\n\n![gsdv remote web demo](assets/showcase/remote-web-demo.gif)\n\n| Fullscreen agent workspace | Row and column agent split |\n| --- | --- |\n| ![gsdv fullscreen agent workspace](assets/showcase/fullscreen-agent-workspace.png) | ![gsdv row and column agent split](assets/showcase/agent-row-column-split.png) |\n\nIt keeps the coding agent, project notes, implementation workflow, repository review, and workspace shell inside one focused app window. The goal is not to become a general IDE. The goal is to keep the operational context around an AI-assisted project visible, editable, and reviewable while work is happening.\n\nThe current integration focus is Codex. Claude-compatible paths still exist where they are useful, but the most actively shaped workflows, defaults, and hook integrations are optimized around Codex sessions.\n\n```text\nworkspace rail | outline / work-flow | active workspace surface\n```\n\n## Product Position\n\nModern agent work creates a coordination problem. The useful context is split across the agent terminal, Markdown notes, task plans, git history, review artifacts, shell commands, and small local scripts. `gsdv` treats those as one workspace instead of separate windows.\n\nThe app is built around three ideas:\n\n- the workspace is the unit of isolation\n- the agent is the primary working surface\n- project knowledge and review state should stay close to the agent\n\nThis makes `gsdv` closer to a project cockpit than an editor. It is dense, stateful, and meant to stay open for long sessions.\n\n## Workspace Model\n\nEach workspace owns a complete context bundle:\n\n- one primary agent session\n- one persistent workspace terminal\n- one Markdown outline and active document state\n- one `gsdv-spec` workflow tree\n- one reviewer state for GSD and Git inspection\n- its own dialogs, notifications, recent files, favorites, and runtime state\n\nSwitching workspaces swaps the entire bundle. A terminal, agent session, selected Markdown file, workflow selection, and reviewer position belong to their workspace, not to the global window.\n\n## Primary Workflows\n\n### Run The Agent\n\nThe agent surface embeds a real terminal backend and launches the selected coding agent from the workspace root by default. It supports resumable sessions, subagents, translated input drafts, quick replies, status hooks, and activity-aware UI state.\n\nAgent sessions can be arranged as a visible grid. A workspace starts as one row with one column, and additional rows or columns can be added from the Agent surface context menu. Each column owns its own agent tabs and add-tab control. Rows and columns can be resized with splitters, folded, restored, or closed, and the focused cell receives keyboard input. `Ctrl+Arrow` moves focus across visible columns and rows without sending the arrow key into the agent terminal.\n\nEach agent tab can carry its own optional launch settings, including model, Codex model provider, effort, fast mode where supported, and work directory. Work directory overrides are agent-scoped and persisted with the workspace. They can be typed directly or filled from a folder picker, and an empty value falls back to the workspace root. The child process is launched in that directory instead of passing a directory flag through the agent CLI, so Codex and Claude use the same behavior.\n\nCodex status hooks feed the workspace activity state directly into the app through the local hook socket. This avoids polling the status file during active sessions while keeping the persisted file as a startup fallback.\n\nThe agent surface is the workspace home. Other surfaces exist to feed context into it, inspect its results, or maintain the project plan around it.\n\n### Maintain Project Knowledge\n\nThe Markdown outline gives fast access to workspace documentation, attached local directories, and supported home-root Markdown sources. The center surface can edit Markdown directly or render it as preview. Recent Markdown history and diff context help move information between notes and the agent without leaving the app.\n\nOutline directory menus can attach another local directory beside the workspace root, remove an attached directory without deleting it, create Markdown files, and create folders. New folder dialogs focus the name field immediately and accept Enter to create, keeping the file-management path keyboard friendly.\n\n### Drive Work From `gsdv-spec`\n\nThe Work-flow tab reads `./gsdv-spec` and turns it into a project/task/step tree. It is intentionally lightweight: task files are Markdown, task descriptions are Markdown, and each step is a level-2 checkbox heading. Task files use the `task-*.md` convention so workflow content stays easy to identify in a normal repository tree.\n\nA task opens a focused task surface:\n\n```text\ntask description editor\nsteps list | selected step editor\n```\n\nThis keeps intent and implementation notes in the same file. The UI edits the task description and selected step description together, then writes them back to the task Markdown.\n\nWorkflow paths can be copied in a stable `project \u003e task \u003e step` form, and keyboard shortcuts can switch between the agent and the active workflow surface so implementation notes stay close to the running session.\n\n### Review What Changed\n\nReviewer is a full route, not a side panel. It replaces the normal outline and center surface with a dense inspection view for GSD provenance and Git state.\n\nIn Git mode, the reviewer is organized around repositories, commits, files, and diff/full-file content. In GSD mode, it is organized around change groups, repositories, files, and diff/full-file content. Reviewer rows can produce agent-ready prompt text so review observations can go back into the agent quickly.\n\nReviewer targets can also open directly in the embedded Helix drawer, rooted in the target repository.\n\n### Navigate Code With Helix\n\n`gsdv` embeds Helix as a mature editor surface instead of trying to become a code editor itself. Agent output that contains `file:line` or `file:line-line` can open Helix at the target file and line. Reviewer selections can open Helix in the matching repository, and general workspace Helix opens reuse the active workspace root.\n\nAgent file-line opens are tracked in a short in-memory recent list. The list keeps the latest targets first, deduplicates by workdir, file, and line, and can be reopened from a centered modal.\n\nInside the embedded Helix surface, `Alt+D` and `Cmd+D` can send the current `file:line` back through the app hook socket. The app copies that location and pastes it into the active agent input, leaving it ready for the next prompt.\n\n### Keep A Workspace Shell\n\nEach workspace has a persistent terminal separate from the agent. It stays rooted in the workspace and can be left and resumed like any other workspace surface.\n\n`F11` toggles an app fullscreen mode that hides the workspace rail, outline, and top mode bar while keeping the active center surface and bottom status bar visible.\n\n### Attach Local Tools\n\nSmall shell scripts can be surfaced as extra tools. They can live globally or in a workspace, expose card or switch style controls, take input, and route output into the app notification stream.\n\nReviewer scripts are context-aware actions for the reviewer surface. They are useful for local repo checks, branch-specific scripts, or project-specific review automation.\n\n## `gsdv-spec`\n\n`gsdv-spec` is the project workflow convention used by the Work-flow tab and the bundled `gsdv-wf` skill.\n\n```text\ngsdv-spec/\n  root.md\n  ps/\n    \u003cproject\u003e/\n      root.md\n      task-*.md\n```\n\n`gsdv-spec/root.md` describes the whole spec. Each project directory has its own `root.md`. Task files are plain Markdown:\n\n```md\nTask-level description before the first step.\n\n## [x] Implement storage path\nStep description.\n\n## [ ] Handle restore flow\nStep description.\n```\n\nRules:\n\n- content before the first valid step heading is the task description\n- a valid step heading is `## [ ] title`, `## [x] title`, or `## [X] title`\n- step titles are one line and may contain spaces or non-English text\n- step descriptions continue until the next valid step heading\n- there are no nested workflow steps in the current format\n- logical paths copy as `project \u003e task \u003e step`\n\nThe format is deliberately plain Markdown so it remains readable without `gsdv`.\n\n## Integration Model\n\n`gsdv` installs local integration assets for the current user:\n\n- an agent status hook under `~/.gsdv/hooks`\n- the bundled `gsdv-wf` skill for Codex and Claude skill directories\n- a process-local hook endpoint used by Codex status hooks and embedded Helix actions\n\nThe app stores runtime state under `~/.gsdv`: workspace metadata, recent documents, favorites, settings, agent status, notifications, reviewer scripts, and extra tools.\n\nNetwork proxy settings can be applied to newly launched agents, terminals, Helix, and scripts. The proxy page keeps saved values separate from the enable switch, so a proxy can be turned off without clearing the URL and `no_proxy` fields.\n\nThe hook endpoint is a Unix domain socket on Linux and macOS, and a named pipe on Windows. Messages use a small length-prefixed frame with a `key:data` payload so the same channel can carry agent status updates, Helix cursor-location actions, and future local integrations.\n\n## Operating Model\n\n`gsdv` is a single-process `egui` / `eframe` desktop app.\n\nThe important product consequence is that terminal output, file watching, reviewer refresh, document saves, screenshots, script output, and UI input all stay coordinated through one app state model. Visible UI state changes flow through a single `AppEvent` queue. Slow work is pushed out of the UI event drain and returns through events.\n\nTerminal surfaces use direct `alacritty_terminal` integration. The app does not rely on tmux, Ratatui panes, terminal screenshots, or legacy TUI compatibility layers to compose the product.\n\nTerminal repaint is gated so hidden or inactive terminal surfaces do not create repaint storms. Modern TUI keyboard protocols are forwarded where possible, which lets embedded Helix and Codex receive modified keys such as Alt and Cmd combinations instead of having the app swallow them.\n\n## Product Boundaries\n\n`gsdv` intentionally does not try to be:\n\n- a general code editor\n- a replacement for a full IDE\n- a terminal multiplexer\n- a generic task manager\n- a project management SaaS surface\n\nIt is designed for a narrower loop:\n\n```text\nplan in Markdown\nrun the agent\ninspect changes\nupdate intent\nreview again\n```\n\nThat loop is why the app keeps Agent, Markdown, Work-flow, Reviewer, Terminal, notifications, and local tools in one workspace shell.\n\n## Design Stance\n\n`gsdv` favors dense, quiet, repeatable desktop workflows. The center surface is intentionally dominant. The rail and outline keep workspace identity and project knowledge nearby without competing with the active work.\n\nThe interface should be fast to scan, keyboard-friendly, explicit about state, and stable during long-running agent or review sessions.\n\nOptional pomodoro focus mode adds a visual gravity-lens rest effect around the workspace. It is designed as a break-state cue, not as a separate productivity dashboard.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxiloemmmm%2Fgsdv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxiloemmmm%2Fgsdv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxiloemmmm%2Fgsdv/lists"}