Install
Requirements
- Bun 1.3.x. The repo pins
bun@1.3.13(packageManagerinpackage.json); development is verified on 1.3.13.actupuses Bun-native APIs (bun:sqlite,Bun.TOML,Bun.file,Bun.Glob,Bun.semver) and Node.js is not supported. - Network access to your action hosts (GitHub/GitLab/Gitea), unless you run fully
--offlineagainst a warm cache.
Get the code
actup is currently distributed from source as a Bun monorepo. Clone the repository and install workspace dependencies:
git clone https://github.com/kjanat/actup-ts
cd actup-ts
bun installbun install resolves all workspace packages (@actup/core, @actup/provider-*, @actup/providers, @actup/cli).
Running
The root package.json exposes a script that runs the CLI entry point:
bun run actup --helpbun run actup is equivalent to bun packages/cli/src/index.ts. You can invoke the entry point directly as well:
bun packages/cli/src/index.ts checkThe CLI file has a #!/usr/bin/env bun shebang and the @actup/cli package declares a bin named actup, so within a Bun workspace context the binary name is actup.
Authentication
Tokens are read from the environment. GitHub GraphQL (the default fetch.apiMode) requires a token.
| Variable | Used for |
|---|---|
GITHUB_TOKEN / GH_TOKEN | GitHub / GitHub Enterprise |
GITLAB_TOKEN | GitLab |
GITEA_TOKEN | Gitea / Forgejo / Codeberg |
A per-host tokenEnv in the config file overrides the default variable for that host. Token-related auth failures exit with code 3 — see usage.
Docker
A Dockerfile builds a slim image containing just the compiled actup binary (no Bun / node_modules in the final layer). No image is published to a registry yet — build it from source:
docker build -t actup .
docker run --rm actup --helpMount the repository you want to scan at /work (the image's working directory). The container runs as a non-root user, so a read-only mount is enough for check:
docker run --rm -v "$PWD:/work:ro" actup check
docker run --rm -v "$PWD:/work:ro" actup check --format sarif > actup.sarifFor update / pin (which rewrite files) mount writable (drop :ro) and pass a token via -e GITHUB_TOKEN for higher rate limits.
Verify the install
bun run actup config # prints the effective default config as JSON
bun run actup cache path # prints the SQLite cache file pathNext: Usage.