Skip to content

Add a dashboard for monitoring psyops #5

@WiggidyW

Description

@WiggidyW

Motivation

Today there's no single surface to see what each psyop is actually doing. Operators have to either tail stderr from psyops run or open the SQLite DB and write queries to answer basic questions like:

  • What did this psyop score in its last run, and what did it deliver?
  • Which posts are sitting in for_you_queue waiting to be hydrated?
  • How many delivery_queue rows are pending / failing per target?
  • What does the latest scoring distribution look like (uniform 0.5? actual signal?)?
  • Which psyops haven't been run in a while?
  • What's the recent X-API spend (calls / ratelimit) per psyop?

A read-only dashboard that surfaces this state would replace a lot of ad-hoc poking.

Proposed scope (v1)

A local web UI launched via psychological-operations dashboard (or similar). Reads from the same ~/.psychological-operations/data.db + config.json + psyops/ dir the CLI uses. No state of its own.

Per-psyop view:

  • Identity (name, current commit SHA, enabled/disabled, configured targets)
  • Last run summary (timestamp, accepted / scored / survivors / delivered counts)
  • Score distribution histogram for the most recent run
  • Recent survivors with score + URL + delivery status per target
  • for_you_queue size + oldest entry age
  • delivery_queue rows scoped to this psyop, with per-row attempts / last_error

Cross-cutting view:

  • All psyops at a glance (last-run timestamp, survivors count, pending deliveries, error count)
  • Global delivery_queue health
  • Recent objectiveai spend (sum of usage.cost across recent function executions)
  • Recent X-API call volume (search vs hydrate vs likes/retweets) — useful as a ratelimit-burn proxy

Stretch

  • Re-run a single psyop from the UI (button → spawn psyops run --name X)
  • Drain the delivery queue from the UI (button → spawn targets deliver)
  • Live tail of the most recent objectiveai execution log (the SW-style Logs ID thing) so the operator can debug a degenerate score distribution without rummaging in ~/.objectiveai/logs/

Non-goals

  • Cloud / remote-multi-user — strictly local + read-only on ~/.psychological-operations/
  • Editing psyop.json from the UI — keep psyop authorship in the file system + git, that's the whole point of the per-psyop git repo

Implementation notes

Probably a Rust binary serving a small static HTML/JS app from an embedded include_dir!-ed bundle. Same pattern as the chromium / extension bundles. Localhost-only, no auth needed since it's a single-user local tool.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions