deeplo

module
v0.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 12, 2026 License: MIT

README

deeplo

deeplo

A small, agentless deployment tool for Docker Compose over SSH.

Release CI


A daemon watches your Git repositories and deploys Docker Compose projects to remote hosts over SSH. It maps repo paths to deployable projects, ships as one small binary, and does not install anything on the target hosts.

Hosts, repos, and projects live in one config file:

hosts:
  - name: web-1
    address: 10.0.0.10
    deploy_dir: /srv/apps

repos:
  - name: myapp
    url: git@github.com:yourorg/myapp.git
    branch: main
    trigger_mode: hybrid

projects:
  - name: myapp
    repo: myapp
    repo_subdir: deploy
    targets:
      - web-1
    persist_files:
      - .env

When a commit lands on a watched branch, deeplo detects it by webhook, polling, or both. It works out which projects changed, reads their Compose files from that exact commit, and updates each stack on its configured hosts.

Getting started

Full documentation is at deeplo.xyz.

Highlights

  • Agentless: targets need only Docker, Compose, and SSH access.
  • One small binary: daemon and operator CLI in the same executable.
  • Push or poll: webhook, poll, or hybrid triggers per repo.
  • Path-aware: only deploys the projects whose files changed, monorepo friendly.
  • Traceable: deployment state, history, and logs from the CLI.
  • Reporting: GitHub deployment and commit statuses.

Directories

Path Synopsis
cmd
deeplo command
internal
api
Package api implements the deeplo admin API served over a Unix socket.
Package api implements the deeplo admin API served over a Unix socket.
bootstrap
Package bootstrap reads daemon configuration from environment variables and manages the deploy config lifecycle.
Package bootstrap reads daemon configuration from environment variables and manages the deploy config lifecycle.
build
Package builds holds the build-time version string.
Package builds holds the build-time version string.
cli
Package cli implements the deeplo command-line interface.
Package cli implements the deeplo command-line interface.
client
Package client provides a Go client for the deeplo admin API.
Package client provides a Go client for the deeplo admin API.
compose
Package compose provides helpers for running Docker Compose operations on a remote host.
Package compose provides helpers for running Docker Compose operations on a remote host.
config
Package config defines the YAML deploy configuration.
Package config defines the YAML deploy configuration.
daemon
Package daemon implements deeplo's long-running service process.
Package daemon implements deeplo's long-running service process.
engine
Package engine connects push events to Docker Compose deployments.
Package engine connects push events to Docker Compose deployments.
logger
Package logger configures structured logging.
Package logger configures structured logging.
mirror
Package mirror manages bare git mirrors on disk.
Package mirror manages bare git mirrors on disk.
planner
Package planner maps a Git push event to the set of project-host pairs that should be deployed.
Package planner maps a Git push event to the set of project-host pairs that should be deployed.
poller
Package poller handles the deploy logic for poll-triggered repositories.
Package poller handles the deploy logic for poll-triggered repositories.
providers
Package providers wires concrete webhook and reporting implementations to the provider-agnostic interfaces used by the rest of the daemon.
Package providers wires concrete webhook and reporting implementations to the provider-agnostic interfaces used by the rest of the daemon.
reporter
Package reporter defines the interface that deploy reporters must satisfy.
Package reporter defines the interface that deploy reporters must satisfy.
reporter/github
Package github sends GitHub Deployment and commit status events for the deploy lifecycle.
Package github sends GitHub Deployment and commit status events for the deploy lifecycle.
repowatcher
Package repowatcher polls remote git repositories and dispatches to subscribers when a new SHA is detected.
Package repowatcher polls remote git repositories and dispatches to subscribers when a new SHA is detected.
runlog
Package runlog handles per-deployment run log files.
Package runlog handles per-deployment run log files.
runner
Package runner implements a concurrent job dispatcher for deploy and teardown jobs.
Package runner implements a concurrent job dispatcher for deploy and teardown jobs.
ssh
Package ssh implements SSH-based remote host connectivity.
Package ssh implements SSH-based remote host connectivity.
state
Package state persists deployment records and per-repo poll state to the local filesystem as JSON files.
Package state persists deployment records and per-repo poll state to the local filesystem as JSON files.
testutils
Package testutils provides helpers for integration and transport tests.
Package testutils provides helpers for integration and transport tests.
utils
Package utils contains small shared helpers
Package utils contains small shared helpers
webhook
Package webhook defines the normalized push event type shared between webhook provider implementations and the engine.
Package webhook defines the normalized push event type shared between webhook provider implementations and the engine.
webhook/github
Package github handles GitHub push webhook payloads.
Package github handles GitHub push webhook payloads.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL