Backend Logs

The Logs page in Settings → Logs lets deployment owners view the most recent backend log entries from the browser, without needing shell access to the server.

Who can access this page

The Logs page is restricted to deployment owners — anyone who is an Owner of at least one organization in this deployment. Organization-level admins and viewers are deliberately excluded because the buffer contains entries from every organization served by this instance.

If you open the page without owner privileges you will see an “Owner access required” notice instead of the log stream.

What it shows

ActivityPulse keeps the most recent 1,000 log entries in memory. When you open the page:

  1. The buffer is sent to your browser as a snapshot.
  2. New entries are streamed in real time over Server-Sent Events as the backend emits them.

Each row shows the local timestamp, log level, target (typically the Rust module that emitted the event), the message, and any structured key-value fields.

Controls

  • Level filter — show entries at or above the chosen level (TRACE / DEBUG / INFO / WARN / ERROR). Defaults to INFO.
  • Search — case-insensitive substring match against message, target, and field values. Applied server-side, so changing it reconnects the stream with the new filter.
  • Pause / Resume — temporarily stop appending new entries to the list while you read. New entries that arrive while paused are buffered and flushed when you resume.
  • Clear — empties the visible list. The backend buffer is unaffected; reconnecting will show recent entries again.
  • Auto-scroll — when checked (default), the view stays pinned to the latest entry. Uncheck if you want to scroll back without being interrupted.

The status pill on the header shows the live connection state: Live, Connecting…, Reconnecting…, Paused, or Error, alongside the current entry count.

Older history

The in-memory buffer only holds the last 1,000 entries. For older logs, use the host’s journal:

sudo journalctl -u activitypulse --since "1 hour ago"

Logs in journald include everything ActivityPulse has written to stdout/stderr since the service last started, persist across page reloads, and are subject to the system’s journal retention policy.

Privacy and security

Log entries can include operational details from any organization on the deployment, including error messages from background syncs, Jira issue lookups, and similar. Treat the page as you would shell access to the server: do not share the URL or screenshots with anyone who should not see deployment-wide diagnostics.

A short-lived token is minted just before the live tail connects, so the log stream cannot be reached with a regular bearer token alone.