Monorepo for Aesthetic.Computer aesthetic.computer
README.md

Mediascholar #

Mediascholar synthesizes its own new-media research topics and produces review-only Botted Paper candidates through the complete /papers mill.

The execution split is deliberate:

mediascholar.timer
  → mediascholar.service (admission + provider harness + isolated checkout)
    → mediascholar-proxy.service (loopback credential broker)
      → Claude Code or Codex
    → Paper MCP (build + Figure-Table-QA-Check)
  → prox-worker.service (tailnet ledger + allowlisted job control)

jasellite:mediascholar appears in Prox while a run is active and remains awaiting when a candidate is ready. prox_job can start, inspect, or cancel the fixed mediascholar.service; the Linux endpoint accepts no shell text.

Resource boundary #

The runner refuses admission above 0.55 load per CPU, below 4 GiB available memory, or below 32 GiB free disk. The service independently enforces:

  • one systemd job at a time;
  • CPUQuota=50% with the lowest CPU and I/O weights;
  • 1.5 GiB soft and 2 GiB hard memory bounds;
  • 128 tasks and a six-hour wall-clock limit;
  • 160 brokered provider requests per UTC day, plus Claude's per-stage dollar budgets;
  • no access to the vault, SSH keys, cloud credentials, GPG state, or provider credential files;
  • no publication, deployment, push, or commit capability.

A daily timer retries after resource skips. A successful paper starts a seven-day cadence hold. Four retained candidate or forensic checkouts stop new runs until a human reviews and removes one; Mediascholar never deletes them.

Jasellite #

The installer is report-only without an action:

bash papers/mediascholar/install-jasellite.sh --check
bash papers/mediascholar/install-jasellite.sh --stage
bash papers/mediascholar/install-jasellite.sh --install
bash papers/mediascholar/install-jasellite.sh --queue
bash papers/mediascholar/install-jasellite.sh --dependencies
bash papers/mediascholar/install-jasellite.sh --enable

Installation stages a small runtime at ~/.local/lib/mediascholar. The live ~/aesthetic-computer checkout stays clean and read-only to the agent. --queue leaves the paper timer disabled and retries the dependency bootstrap every six hours. The bootstrap must first pass admission, then runs at 25% of one CPU, idle I/O priority, and a 1 GiB memory ceiling. It enables the paper timer and disables itself only after the tools install successfully.

The enabled paper process also requires Bubblewrap. Its home namespace exposes only the public repository and installed runtime as read-only mounts, plus the Mediascholar state and Prox-advertise directories as writable mounts. An enabled run refuses to fall back to the host filesystem.

Claude uses the existing ~/.config/claude/oauth-token through the loopback broker. Put an Anthropic API key in ~/.config/mediascholar/credentials/anthropic to prefer it. Put an OpenAI key in ~/.config/mediascholar/credentials/openai, install Codex with --install-codex, and choose MEDIASCHOLAR_PROVIDER=openai to use Codex. Credentials must be mode 0600; their values never enter the agent's shell environment or logs.

Candidates live under ~/.local/share/mediascholar/runs/. Each run keeps run.json, topic.json, provider logs, the PDF, and candidate.patch; its isolated, remote-less checkout remains available for review. Publishing stays manual.