No description
  • Go 81%
  • Shell 8.5%
  • templ 5.2%
  • JavaScript 4%
  • Python 0.6%
  • Other 0.5%
Find a file
2026-10-30 07:18:41 +00:00
.github Migrate CI to GitLab with Harbor image proxies 2026-10-19 10:10:28 +00:00
.gitlab Expose accepted deployment environment identity to scripts 2026-10-30 07:18:41 +00:00
.security Select a group when creating a project 2026-10-30 04:35:22 +00:00
charts/durpdeploy Migrate CI to GitLab with Harbor image proxies 2026-10-19 10:10:28 +00:00
cmd/server Fix startup with missing earlier migrations 2026-10-26 07:17:13 -05:00
deploy initial commit 2026-07-25 19:18:00 +00:00
docs Expose accepted deployment environment identity to scripts 2026-10-30 07:18:41 +00:00
internal Expose accepted deployment environment identity to scripts 2026-10-30 07:18:41 +00:00
migrations Expose accepted deployment environment identity to scripts 2026-10-30 07:18:41 +00:00
queries Expose accepted deployment environment identity to scripts 2026-10-30 07:18:41 +00:00
screenshots Refresh application screenshots 2026-10-26 11:44:01 +00:00
scripts Expose accepted deployment environment identity to scripts 2026-10-30 07:18:41 +00:00
skills Expose accepted deployment environment identity to scripts 2026-10-30 07:18:41 +00:00
static Share security confirmation dialog behavior 2026-10-29 01:37:37 +00:00
views Select a group when creating a project 2026-10-30 04:35:22 +00:00
.air.toml Embed CI build numbers in app and versioned container images (#198) 2026-10-14 21:31:18 -05:00
.dockerignore Reduce CI artifact storage and duplicate transfers 2026-10-23 00:57:46 +00:00
.gitignore Verify deployment HTTPS and service exposure 2026-10-28 21:25:10 +00:00
.gitlab-ci.yml Reuse trusted CI caches and rebalance rollout contracts 2026-10-30 06:21:48 +00:00
.golangci.yml Add golangci-lint to CI and resolve baseline findings (#184) 2026-10-13 10:39:20 -05:00
AGENTS.md Reduce redundant CI work and reuse build caches 2026-10-24 14:06:34 +00:00
Caddyfile Verify deployment HTTPS and service exposure 2026-10-28 21:25:10 +00:00
compose.example.yml Verify deployment HTTPS and service exposure 2026-10-28 21:25:10 +00:00
compose.podman.yml Run server-side deployment steps through local container sockets (#97) 2026-09-30 05:31:18 -05:00
compose.yml Verify deployment HTTPS and service exposure 2026-10-28 21:25:10 +00:00
container-entrypoint.sh Add generic ZIP packages to deployments and runbooks (#102) 2026-10-02 15:10:25 -05:00
DESIGN.md Complete optimization roadmap and centralize startup configuration 2026-10-26 11:12:01 +00:00
Dockerfile Update Chi and Node.js for October security fixes 2026-10-22 17:45:38 +00:00
Dockerfile.ci Reuse trusted CI caches and rebalance rollout contracts 2026-10-30 06:21:48 +00:00
Dockerfile.mobile-browser Reuse trusted CI caches and rebalance rollout contracts 2026-10-30 06:21:48 +00:00
Dockerfile.transport-security Verify deployment HTTPS and service exposure 2026-10-28 21:25:10 +00:00
durpdeploy.example.yaml Complete optimization roadmap and centralize startup configuration 2026-10-26 11:12:01 +00:00
go.mod Share security confirmation dialog behavior 2026-10-29 01:37:37 +00:00
go.sum Share security confirmation dialog behavior 2026-10-29 01:37:37 +00:00
LICENSE update 2026-06-27 08:07:31 -05:00
Makefile Verify deployment HTTPS and service exposure 2026-10-28 21:25:10 +00:00
package-lock.json Enhance UI navigation, asset caching, and deployment step logs (#130) 2026-10-09 05:19:34 -05:00
package.json Enhance UI navigation, asset caching, and deployment step logs (#130) 2026-10-09 05:19:34 -05:00
README.md Add explicit credentials, expiry warnings, and rotation across releases 2026-10-29 22:52:58 +00:00
renovate.json chore: Configure Renovate 2026-06-29 11:27:12 +00:00
sonar-project.properties Verify deployment HTTPS and service exposure 2026-10-28 21:25:10 +00:00
sqlc.yaml Expose accepted deployment environment identity to scripts 2026-10-30 07:18:41 +00:00
t3.json Add isolated per-thread development stacks 2026-10-22 23:12:12 +00:00

DurpDeploy

Development status: Active development takes place on GitLab. GitHub mirrors the main branch.

DurpDeploy is under active development and does not have a stable release yet.

Read software versions and build numbers for CLI, API, container, and upgrade diagnostics.

A single-binary deployment tool for Bash, PowerShell, and Python scripts. Organize projects and environments, capture releases, and deploy with live logs.

Main Screen

What it does

  • Ordered script steps, environment-scoped variables, and secret masking.
  • Release snapshots of steps and variables. Refresh affects future deployments; existing deployment snapshots stay frozen.
  • Deployment approvals, cancellation, verification, rollback, and schedules.
  • Remote agent fan-out over pinned mTLS, with environment and capability routing.
  • Reusable templates, runbooks, package repositories, and artifact approval.
  • Slack, email, Gotify, and Discord notifications.
  • Browser sessions, optional MFA/OIDC, bearer API tokens, and an audit log.

Local quick start

Use the curated template library for Bash, PowerShell, Python, and approval-gated Terraform deployment starters.

Install Go 1.26+, Node.js, the templ CLI, and Docker or Podman. Build and start the development HTTPS proxy:

npm ci
make build
make dev

In another terminal, create the first administrator:

./durpdeploy admin create --email admin@example.com --password '<strong-password>'

Open https://localhost:8443. Trust the temporary CA printed by make dev. The backend listens on http://localhost:8080 and uses durpdeploy.db by default. Keep the development encryption key with that database. See development and testing for other databases, proxy options, generated assets, and test commands. Use make demo for a populated instance with a paired agent and retained manual-test fixtures.

Deployment workflow

  1. Create a project and its ordered script steps.
  2. Create environments and add environment-scoped variables.
  3. Create a release to capture the project configuration.
  4. Select an environment and deploy the release.
  5. Follow logs and approvals, then inspect verification results.

Server steps require a container image and a ready Docker/Podman runtime. Step containers receive no runtime socket or control-plane mount. A remote step runs on every matching active agent; there is no local fallback.

API and agents

The JSON API lives at /api/v1. Create a user token in Settings → Tokens or with the CLI, then send it as a bearer credential:

./durpdeploy tokens create --user admin@example.com --name ci
curl -H 'Authorization: Bearer ddp_pat_<token>' http://localhost:8080/api/v1/projects

Browser MFA protects browser sessions only. API tokens remain single bearer credentials; an MFA reset does not revoke them. The public Swagger reference is at /api/swagger/ on a running server.

External agents can discover the shipped operator skill at /.well-known/skills/index.json or /.well-known/agent-skills/. For opencode, add skills: { urls: ["https://your-host/.well-known/skills/"] }, or copy the served skill into ~/.config/opencode/skills/durpdeploy/SKILL.md.

Remote agents support agent/1, agent/2, and agent/3. The v0.1.0 source tag remains Bash-only compatible. Container steps require agent/3; older protocols are host-only. Preserve paired state when upgrading.

Guides

Task Guide
Install with Compose Deployment
Install on Kubernetes Helm chart
Configure remote agents Agent operations and protocol
Back up, restore, or prune audit logs Backup and maintenance
Set up optional OIDC OIDC / Authentik
Assign user permissions Roles
Configure notifications Notifications
Rotate a GitLab project token with a runbook GitLab token rotation
Review generated plans Artifact approval
Understand security boundaries Security and attack drill
Reproduce CI security gates Security scanning
Configure GitLab pipelines and runners GitLab CI
Build and test Development, manual E2E, mobile CI
Change the UI Design system

Limits

  • No SSH-based deployment targets.
  • No parallel step execution or CI/build pipeline.
  • No Kubernetes-native execution backend. The chart hosts the server; use standalone agents for executable steps.
  • Container execution shares the runtime host's kernel. Runtime socket access grants host authority. Trust script authors and isolate execution hosts.

Stack: Go, chi, SQLite/PostgreSQL/SQL Server, sqlc, goose, templ, HTMX, Alpine.js, Tailwind CSS, and DaisyUI. License: MIT.