Skip to content

Comparison: actup vs Dependabot vs Renovate

This is a factual scope comparison, not a benchmark. It reflects what actup ships today (verified against source) and the well-known behavior of Dependabot and Renovate for GitHub Actions.

At a glance

CapabilityactupDependabot (Actions)Renovate (Actions)
Scans uses: in workflowsYesYesYes
Scans composite action.ymlYesYesYes
Opens pull requestsNoYesYes
Runs as a hosted/scheduled botNo (you run it; CI optional)Yes (GitHub-hosted)Yes (app or self-hosted)
SHA-pin actionsYes (pin)No (tag updates)Yes (pinDigests)
Reverse a SHA pin (unpin)Yes (via # tag comment)NoNo (one-way digest pinning)
Multi-provider (GitLab/Gitea hosts)Yes (GitHub/GitLab/Gitea)GitHub onlyGitHub-centric for Actions
Offline / cached resolutionYes (--offline, SQLite cache)NoNo
SARIF / code-scanning outputYes (--format sarif)NoNo
::warning annotationsYes (--github-annotations)NoNo
Non-Actions ecosystems (npm, pip…)NoYesYes
Config policy (track/pin/bump)Yes (zod-validated file)Limited (update strategy)Extensive (presets, rules)
Editor / LSP integrationPlanned (not shipped)NoNo

What actup does that they do not

  • Multi-host in one pass. actup resolves refs against GitHub / GitHub Enterprise, GitLab and Gitea/Forgejo/Codeberg, auto-detecting the host (or via explicit hosts.<host>.kind config). Dependabot's Actions updater is GitHub-only.
  • Reversible SHA pinning. pin writes repo@<sha> # <tag>; pin --unpin reads that comment back and restores the tag. Digest pinning in Renovate is effectively one-way.
  • Offline, cache-backed runs. A TTL bun:sqlite cache lets --offline resolve entirely from previously fetched data — useful in air-gapped or rate-limited CI.
  • First-class machine output for security tooling. Native SARIF 2.1.0 and GitHub annotation emission, plus a strict exit-code contract (0/1/2/3) designed for gating.
  • Formatting-preserving edits. Rewrites are byte-span surgical with atomic temp-file + rename; unrelated lines, quoting and comments are untouched. The tools above regenerate/patch via their own writers.

What they do that actup does not

  • No pull requests, no scheduling of itself. actup is a CLI. It does not open PRs or run as a managed service; you wire it into CI yourself (see CI recipes).
  • Single ecosystem. actup only manages GitHub Actions uses: refs. Dependabot and Renovate cover many language package ecosystems.
  • No grouping/auto-merge/preset ecosystem. Renovate's rule presets, grouping, auto-merge and changelog rendering have no actup equivalent.

Roadmap (not yet shipped)

Per ROADMAP.md, an @actup/lsp language server (diagnostics, code actions, hover) and an @actup/mcp Model Context Protocol server are planned but not implemented. Do not rely on them today.

When to use which

  • Want PR automation across many ecosystems on GitHub → Dependabot or Renovate.
  • Want a scriptable, multi-host, SHA-pinning Actions checker with strict CI exit codes and SARIF, including offline → actup.
  • They are not mutually exclusive: run actup as a code-scanning / gate step alongside Dependabot/Renovate PRs.