No description
  • Emacs Lisp 100%
Find a file
2026-04-20 23:05:10 +02:00
doc Add doc/ with Claude Code setup documentation 2026-04-11 12:13:46 +02:00
role_instructions Two-phase setup, migration framework, role instructions 2026-04-12 21:20:48 +02:00
.gitignore Initial degudev.el: agentic AI development environment 2026-04-11 07:11:04 +02:00
COPYING Add GPL-3.0 COPYING file 2026-04-11 07:24:48 +02:00
degudev-example-config.el Refactor to git-based communication (v0.2.0) 2026-04-12 19:03:07 +02:00
degudev-migrate-v2.el Two-phase setup, migration framework, role instructions 2026-04-12 21:20:48 +02:00
degudev-migrate.el Two-phase setup, migration framework, role instructions 2026-04-12 21:20:48 +02:00
degudev-pkg.el Bump degudev-pkg.el to 0.2.0 2026-04-12 19:09:39 +02:00
degudev-roles.el Developer clones from actual repo, pushes to dev fork 2026-04-20 21:59:56 +02:00
degudev.el Fix README truncation: use incus file push instead of heredoc through shell 2026-04-20 23:05:10 +02:00
README.org Refactor to git-based communication (v0.2.0) 2026-04-12 19:03:07 +02:00

degudev.el — Agentic AI development environment

Overview

An Emacs package for managing software projects with AI agents (e.g., Claude Code) running in Incus containers.

Each project uses three git repositories:

  • Actual repo: the canonical source code (maintainer pushes)
  • Developer repo: fork where the developer pushes code
  • Communication repo: messages between reviewer and developer

Two actors in separate containers:

  • Reviewer: reviews code, writes review messages
  • Developer: implements issues, writes code

The project manager monitors via Emacs and merges approved code.

Access model

Repo Maintainer Reviewer Developer
Actual push pull no access
Developer push pull push
Communication push push push

Installation

From Git (package-install-file)

git clone https://git.degu.cl/daniel/incus.el ~/path/to/incus.el
git clone https://git.degu.cl/daniel/degudev.el ~/path/to/degudev.el

Then in Emacs (install dependency first):

M-x package-install-file RET ~/path/to/incus.el/ RET
M-x package-install-file RET ~/path/to/degudev.el/ RET

With straight.el

(straight-use-package
 '(incus :type git :repo "https://git.degu.cl/daniel/incus.el"))
(straight-use-package
 '(degudev :type git :repo "https://git.degu.cl/daniel/degudev.el"))

With elpaca

(elpaca (incus :repo "https://git.degu.cl/daniel/incus.el"))
(elpaca (degudev :repo "https://git.degu.cl/daniel/degudev.el"))

Dependencies

Configuration

See degudev-example-config.el for a complete example.

(setq degudev-projects
      '(("my-project"
         :container-prefix "myproj"
         :repo-actual "ssh://git@git.example.com/user/project.git"
         :repo-dev "ssh://git@git.example.com/user/project-dev.git"
         :repo-comms "ssh://git@git.example.com/user/project-rev.git"
         :setup-packages ("git" "curl" "build-essential")
         :setup-commands ())))

Commands

Command Description
degudev-register-project Register a new project (prompts for repos)
degudev-create-containers Create and set up both containers (idempotent)
degudev-show-keys Show SSH keys for adding to Forgejo repos
degudev-destroy-containers Destroy both containers (with confirmation)
degudev-list-projects List all configured projects
degudev-start Start a container (reviewer or developer)
degudev-stop Stop a container
degudev-enter Open a vterm inside a container
degudev-review-messages Pull and browse communication messages
degudev-review-changes Pull and show developer's code changes

Workflow

  1. Register project: M-x degudev-register-project
  2. Create containers: M-x degudev-create-containers
  3. Add SSH keys to Forgejo repos: M-x degudev-show-keys
  4. Enter developer container: M-x degudev-enter (select dev)
  5. Developer implements issues, pushes to dev repo
  6. Review messages: M-x degudev-review-messages
  7. Review code: M-x degudev-review-changes
  8. If approved, maintainer merges to actual repo

Message file naming

Messages in the communication repo follow this pattern:

{issue-id}-{YYYY-MM-DD}T{HH:MM}-{author}.org

Examples:

001-2026-04-12T14:30-reviewer.org
001-2026-04-12T15:45-developer.org

License

GPL-3.0-or-later