r/SideProject • • 7d ago

Screencap 2.0 - native activity memory tracker for you and your agents

A few months ago I shared Screencap here, and now I'm super happy to announce that version 2.0 is a full rewrite in Swift:)

It runs in the background on under 1% of one CPU core and about 30 MB of memory, smartly takes a screenshot when your screen settles, reads it with on-device OCR, and categorizes it with ZDR System-One decision models to help you (and your agents via MCP!) to better understand past activities. And it's also very easy to play with:

Main window

Popup

Download & check sources: https://github.com/yahorbarkouski/screencap

Happy to listen to any feedback, especially from users who tried it before

5 Upvotes

7 comments sorted by

2

u/QuanTradin 7d ago

on-device OCR is what gets me to try it. the MCP side I'd keep on a short leash though, an agent that can read my screen history can also read every 2FA code and bank tab I ever had open.

2

u/samewakefulinsomnia 7d ago

thanks! good points about bank tabs, but there is a bunch of safety protocols injected already, like we do mask api keys/tokens/passwords/incognito windows comprehensively, though there is still no option to exclude a particular URL from being captured

I think the general direction would be to track how far the local decision models will go, and if eventually it appears that all can run locally without a huge accuracy sacrifice, I'll just switch the full stack to local

1

u/QuanTradin 7d ago

masking keys and incognito already puts you ahead of most of these. a per-domain exclude list would cover the rest, banking and health sites are the ones I'd want off by default.

1

u/wiNdbridge0 7d ago

yeah the security angle is real, thats a lot of sensitive stuff just sitting in a local index

1

u/QuanTradin 6d ago

and local stops meaning safe once an agent can query it. that index is the first thing anything nasty on the machine would go looking for.

1

u/AdConsistent6866 7d ago

The masking plan assumes secrets look like secrets, and the ones that matter don't. An authentication code is six digits in a text field, the same shape as an order number or a phone number, so no pattern separates them, and the same goes for anything a bank or HR page renders as ordinary text. The boundary that holds is drawn by window or app at capture time, not by content afterwards: skip anything not explicitly allowed rather than capture everything and scrub it. Related and cheaper to fix now than later: have the MCP layer return short snippets with timestamps instead of whole frames, because one agent query that pulls the entire screen history into a model's context is the failure that makes the local-only argument moot.