Skip to content

Activity & Audit Log

The activity log is a persistent, queryable record of everything that changes in SimpleDeploy: who did what, when, and for which app.

SurfaceLocation
Per-app feedApp detail page, Activity tab
Global feedSystem → Audit Log
Recent activityDashboard home card
CategoryEvents
composeServices added/removed, image/env/ports/replicas/labels changed
endpointEndpoints added/removed, TLS settings, advanced settings
backupBackup config created/changed/removed
alertAlert rules created/changed/removed
webhookWebhooks created/changed/removed
registryRegistry credentials added/removed
accessUser app-access grants and revocations
deployDeploy succeeded, deploy failed (with error), rollback
lifecycleApp created, stopped, started, restarted, scaled, removed
authLogin success/failure, password change (global only)
systemUser CRUD, API key CRUD, public-host change, git sync config, retention settings (global only)

Each entry shows: actor, source (UI / API / CLI / git sync / system), timestamp, and a human-readable summary. For config changes, before and after values are stored as structured JSON and visible via the expand chevron on each row.

Entries for config-change categories (compose, endpoint, backup, alert, webhook, registry, access) carry a sync badge when git sync is enabled:

BadgeMeaning
SyncedChange committed and pushed to the git remote
PendingWaiting for the next sync cycle
Sync failedCommit or push failed; see git sync error details

Runtime-only events (deploy, auth, system, lifecycle start/stop/scale) are never committed to git and show no badge.

Default: 365 days. Set to 0 to keep entries forever.

Super-admins can adjust retention on the System → Audit Log page or via the API:

Terminal window
curl -X PUT https://manage.example.com/api/system/audit-config \
-H "Authorization: Bearer $SD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"retention_days": 180}'

A background pruner runs nightly and removes entries older than the configured threshold.

Super-admins can:

  • Adjust retention days (UI or API).
  • Purge all entries via the Purge activity log button on System → Audit Log (or DELETE /api/activity).
RoleVisible entries
Super-admin / AdminAll entries across all apps and system events
Non-adminEntries for apps they have access to, plus their own auth events

Registry credentials are never stored in audit JSON. Before/after snapshots for registry entries record only the registry name and host, not the password or token.

GET /api/apps/{slug}/activity # per-app feed, cursor-paginated
GET /api/activity # global feed
GET /api/activity/recent # dashboard mini-feed (8 entries)
GET /api/activity/{id} # single entry with full before/after JSON
GET /api/system/audit-config # current retention setting (super-admin)
PUT /api/system/audit-config # update retention (super-admin)
DELETE /api/activity # purge all entries (super-admin)

Query params for list endpoints: categories=compose,deploy, app=<slug>, limit=50, before=<id> (cursor).

  • Git sync - how config changes flow to a git remote.
  • Security hardening - login rate limits, account lockout, and other controls that generate auth events.