Skip to content
ralstoniaPublic

About

Housekeeping for the agent era. Auto-curate every screenshot your CUA tools and you ever take.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Rosie

Housekeeping for the agent era.

License: MIT Status Platform Local-first


Your computer-use agents are generating screenshots faster than you can name them. Cowork captures every step of a checkout flow. Claude in Chrome dumps a frame on each navigation. Codex pastes terminal screens when debugging. Meanwhile, your desktop accumulates Screenshot 2026-05-16 at 2.43.22 PM.png.

Rosie is a scheduled housekeeping job that looks at each screenshot — pixels, OCR, surrounding context — and gives it a name that tells you what's actually in it. Then files it. Then indexes it. Forever.

The longer it runs, the more your screenshot folder becomes a searchable visual knowledge base of what your agents — and you — actually did.


See it in action

Before and after

Features

  • 🤖 CUA-aware — first-class watchers for Cowork, Codex, Claude in Chrome, Operator, Manus, Devin, Replit Agent, Cursor, Goose, Open Interpreter, Browser Use, and any custom app built on the Computer Use SDK.
  • 🧠 Intelligent naming — local vision model (gemma3, qwen2-vl, moondream) reads the image, OCR reads the text, and a context-fusion layer reads sibling files, window titles, and calendar events to produce a name that's actually useful.
  • 📂 Closed-vocab intent taxonomy — every screenshot is tagged error, output, evidence, reference, doc, ui, meme, or other. Makes the archive queryable instead of just searchable.
  • 🔒 Local-first — Apple Vision OCR is native and free. Local VLM runs via Ollama. Hosted fallback is opt-in. Your screenshots never leave your machine unless you say so.
  • 🗂️ Sidecar source of truth — each curated image gets a JSON sidecar with caption, tags, OCR text, agent run ID, and provenance. SQLite is a denormalized read cache, rebuildable from sidecars.
  • ⏱️ launchd-scheduled — fires every 15 minutes, idempotent, safe to crash. Restarts pick up where they left off.
  • 🔌 Pluggable sync — push high-signal captures to Obsidian, Notion, Logseq, or wherever your second brain lives. One adapter file per destination.
  • 🛡️ Sensitive-capture quarantine — OCR pre-pass detects credentials, OTPs, and card numbers and routes them to an encrypted directory, never indexed in plain SQLite.

How it works

Architecture

A six-stage pipeline, each stage a pure function with logged input/output. Idempotent end-to-end. Crash anywhere and the next run picks up cleanly.

For the full methodology — naming schema, intent taxonomy, context enrichment, sidecar schema, launchd configuration, module layout — see SPEC.md.


Quick start

Status: MVP under build. Phase 0–4 land first (see roadmap). Star the repo to follow.

# Clone
git clone https://github.com/your-username/rosie.git
cd rosie

# Install (Python 3.11+)
pip install -r requirements.txt

# Set up Ollama (for local VLM)
brew install ollama
ollama pull gemma3:4b

# Configure
cp config.example.yaml config.yaml
$EDITOR config.yaml   # set archive_root and pick your sources

# Dry-run first
python curate.py --config config.yaml --dry-run

# Install the launchd job (runs every 15 min)
./install.sh

After that, leave it alone. Check ~/Pictures/Archive/ in a few days.


Configuration

Sources are declared in YAML. One entry per agent, one entry per manual capture surface:

archive_root: ~/Pictures/Archive

sources:
  - name: cowork
    paths: [~/Library/Application Support/Cowork/screenshots]
    sidecar_hints: [task.md, transcript.json]

  - name: claude-chrome
    paths: [~/Library/Application Support/Claude/chrome-screenshots]

  - name: codex
    paths: [~/.codex/sessions/*/screenshots]

  - name: manual
    paths: [~/Desktop, ~/Pictures/Screenshots]
    include_only: ["Screenshot*.png"]

vlm:
  primary: ollama:gemma3:4b
  fallback: none      # or claude-haiku / gpt-4o-mini

ocr:
  engine: apple-vision

enrichment:
  calendar: true
  sibling_files: true
  shell_history: false   # opt-in

Full schema in config.example.yaml.


Philosophy

A few principles, in case you want to argue with them:

Closed-vocab beats free-form. The eight-intent taxonomy is the wedge that turns a search engine into a filing system. You can't ask "show me all the agent errors from May" against a pile of free-form captions. You can against intent=error.

Context fusion beats bigger models. A 4B local vision model + sibling-file context produces better names than a frontier model staring at pixels alone. The agent already wrote what it was doing in task.md next door — read it.

Local-first or it's not yours. A visual knowledge base of everything your agents did is only useful if it's also private. Hosted API calls are optional and opt-in.

The sidecar is the source of truth. Indexes get corrupted; SQLite gets out of date; embedding models change. JSON sidecars next to the files outlive all of that. Rebuild any index from sidecars in one pass.

Spec-first, code-second. Rosie has a spec. PRs that change behavior open a discussion against the spec before they change the code.


Roadmap

  • Spec locked
  • Phase 0 — Discover + triage + timestamp rename
  • Phase 1 — OCR + VLM + sidecar + archive
  • Phase 2 — Context fusion (sibling, window title, calendar)
  • Phase 3 — SQLite index + CLI search
  • Phase 4 — launchd install + log hygiene
  • Phase 5 — Knowledge-base sync adapters (Obsidian, Notion, Logseq)
  • Phase 6 — Embedding search + weekly digest
  • Phase 7 — MCP server (expose archive to other agents)
  • Phase 8 — Linux support

Contributing

Issues and PRs welcome. Read SPEC.md first — Rosie is spec-led, so most discussions start there.

If you want to add a new source (a new CUA tool, a new manual capture app), it's a one-entry change to the watch registry plus optional sidecar hints. Open a PR with the entry and an example screenshot you'd like curated.


License

MIT. Use it, fork it, ship a SaaS version, doesn't matter.


Built for the agent era. Local-first. Spec-led. MIT-licensed.

About

Housekeeping for the agent era. Auto-curate every screenshot your CUA tools and you ever take.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages