Show HN: Rem: Remember Everything (open source) (github.com)
An open source approach to locally record everything you view on your Apple Silicon computer.
Note: Relies on Apple Silicon, and configured to only produce Apple Silicon builds.
I think the idea of recording everything you see has the potential to change how we interact with our computers, and believe it should be open source.
Also, from a privacy / security perspective, this is like... pretty scary stuff, and I want the code open so we know for certain that nothing is leaving your laptop. Even logging to Sentry has the potential to leak private info.
199 comments
[ 3.1 ms ] story [ 221 ms ] threadThe demo i showed with chatgpt works just as well with openhermes2.5-mistral. But is instant with chatgpt instead of 20s
- takes screenshots every two seconds - records all the text via ocr - builds full text search with sqlite - allows you to go back in time however far and select/copy text from there
No meeting recording / audio recognition. Kinda irks me. Easy to add though.
https://help.rewind.ai/en/articles/7791703-ask-rewind-s-priv...
Would be even more amazing with a locally running LLM
It's like law enforcement tracking everything we say. They aren't catching many people right now, but wait until the future when they start working backwards with logs.
i often do things like
history | rg ..
it helps when you roughly know what you want to find, but want to check some detail you forgot
fzf supercharges your shell history I can’t imagine my life without it since I spend most of my day in terminal
[^1]: https://github.com/atuinsh/atuin
- Insanely useful with some changes.
- Needs local llama support for privacy.
- Needs pause/record functionality, ideally w/ preset exclusions, again privacy.
- If this could evaluate in real time at some point and start intelligently adding value at that point it has the chance to change things.
My guess is that in 10 years this will seem absolutely archaic. Now, it feels a bit like magic.
As far as real time stuff and local llama- absolutely, on the roadmap.
I’ve been exploring / experimenting with embedding spaces and local models a lot.
Or you can ise the release i uploaded.
I added instructions for how to use it once it’s open in readme.
Apologies for anything unclear!
Just curious, what is relying on apple silicon?
But if you / someone can get it to be efficient enough, awesome!
I wouldn't be surprised if the battery issue is problematic, likely will result in at least some kind of battery life reduction, but perhaps not 30 or 50% at 0.5fps.
I haven't looked into the code, but if you're running ffmpeg, then battery life will likely take a hit depending on what exactly you're doing. Video encoding _can be_ heavy on the CPU/GPU.
Lots of people work plugged in most of the time. I don't see why one would want to gatekeep to keep them from using it.
I have no problem with not supporting a platform because you have no interest or any other reason, but previously it was quite proud to not support it which is different.
At such slow rates you don't need to create video - you just keep the individual images.
OCR doesn't need to be real-time, but can be done in batch mode or when the machine is idle.
I also don't understand the chatGPT component, and what it is trying to tell him. Though I'm sure if you just threw the URL and the screenshot to chatGPT, you could ask it questions about that source.
I'm not sure how useful this is tbh, or how I would use it. I'm not saying it isn't useful, just that I'm not sure how I would use it, or why it is useful.
> I also don't understand the chatGPT component You give it context from the "recording" and it answers questions you give it with that context info.
I debounce the livetext analysis on history so you should be able to spin fast without issue
I’m super glad about this personally.
Seems a legitimate concern; unsure why op is receiving negative attention for saying so.
I wrote a PNG DB to split PNG images into many blocks and have each block stored in a DB. If there are several equal blocks, it is only stored once. Via a hash table, the lookup for such blocks is made fast. With this PNG DB, I have a compression rate of about 400-500%. https://github.com/albertz/png-db
Some of the scripts I used to analyze the screenshots are here, but in the end, it was not really so successful and reliable: https://github.com/albertz/screenshooting
In the end, that lead to another project, where I just was storing that information more directly, i.e. what application was in the foreground, what file was open. https://github.com/albertz/timecapture
Tesseract?
What was the performance (of the OCR) like?
https://github.com/kaetemi/second_capture/blob/master/second...
like if I see C# or Python it makes sense to me at least in some way
whereas CPP code always looks like it's powering some rocket engine?
Also thanks for sharing!
I've seen worse Python.
Personally, I think it's charming. :)
Could it be that you're just more used to looking at C#/Python than other things, then other things are more foreign and therefor look messy?
As another anecdote, I cannot stand browsing/looking through C# code as it tends to be filled with various classes just to basically write very basic programs. The amount of over-engineering I've seen in C# surpasses everything else I've looked at. Not to mention how people seem to arbitrary chose between private/public with no real consensus on when to use what, everything seems to be encapsulated in the wrong way. And don't get me started on the infrastructure around it, csproj vs sln and dealing with dependencies/assemblies.
But then I mostly write Clojure code day-to-day, and I realize that my troubles for dealing with C# is mostly because of what I'm used to, not because the language itself is inherently shit. I only have myself to blame for this. I'm sure people who write C# day-to-day have the same feelings about Clojure as I have about C#.
Eventually I had to stop because the fan was going crazy, plus I couldn't bear seeing how slow and error-prone I was at typing and at generally operating the computer (it never felt that way when I'm using the computer, but watching myself using it is a different story)
and totally. Haven’t added direct local interaction yet, but on the roadmap.
If anyone has any suggestions, I'd be more than grateful.
Also, integrating with Ollama.ai or some other local LLM with an API server would be fantastic.
They will be very upset
Find the latest flashy thing on Twitter / GitHub, spin it up with a waitlist, then send a16z your deck.
https://www.qbasic.net/en/reference/qb11/Statement/REM.htm
https://ss64.com/nt/rem.html
I'm just wondering how you manage the limitation of context length.
The last 15 frames.
It's a terrible approach! But I had to start somewhere. Actively experimenting with properly leveraging embedding search.
But I've had a hard time finding CPU + RAM efficient vector indexing + search that meets my expectations. Been doing a lot of personal experimentation and research in this space.
Is there a known approach to be able to maintain a large embedding space that you can insert into efficiently and search accurately without needing to load / maintain the entire thing into memory?
I have been considering the idea of using a similar app to this (or rewind.ai), but I have the concern that it might aggravate my situation. Just imaging my checking self watching 12 hours of video footage already gave me chill.
I would appreciate if anyone with a related or similar situation can share their experience using those apps. Since this is fairly sensitive, my email is also in the profile if anyone want to contact me directly.
1: https://rewind.ai/community
This would inevitably end up ingesting secrets, right? Like say from my password manager? Or API keys in my terminal?
Lots of ways for this to go sideways even if the data stays local.
What’s the plan there?
Could you name some?
Every security decision is a risk-reward tradeoff, and the reward of a complete memory of computing tasks seems pretty huge.
I've been curious how Rewind worked under the hood because I've been playing with an idea in my head: an AI assistant that helps you protect your attention.
You would describe the kind of content that you consider a distraction, and any other constraints you have (e.g. "Don't let me watch cat videos unless I'm on a break".
And whenever it sees you watching anything that fits your prompt, it'll pop up on the screen and start a conversation with you to try and understand whether you actually need to consume the content you're looking at.
An AI that intervenes when you're going off track (based purely on how YOU define going off track). Current website blocking approaches aren't useful because they're all-or-nothing. I don't ever want to block entire sites because often there's useful content there relevant for my work. I want to block content on a much more granular level.
And I'd love for an "attention audit" at the end of each day. Attention is our most valuable asset, and I believe protecting it is a worthwhile endeavor... I'd just like some help doing so :).
I'd love to better understand the problems you're facing that makes you want to use a tool like this.
Couldn't find your email, but if you're interested in chatting, you can find mine in my bio. Would appreciate it!
Might be worth checking out Ollama and bakllava. https://ollama.ai/library/bakllava
Maybe the model is a bit too slow, but I'm sure smaller ones will come out soon. You can likely fine tune to do exactly what you need.
Also, the the sense of being back in that time seeing details that I otherwise probably would’ve forgotten was transformative.
In a similar vein to what you’ve done, but focusing specifically on web browsing, I’ve created a tool called ‘DownloadNet.’ It archives for offline use and fully indexes every page you visit. Additionally, it can be configured to archive only the pages you bookmark, offering another mode of operation. It’s an open-source tool, so feel free to check it out: https://github.com/dosyago/DownloadNet
If you take your work very seriously, I can see it being valuable to record it like athletes do. It would be tempting to use this on the “most important” days or when you’re “really ready”. At the very least, there’s a burden of choice and memory. I don’t know about security implications, but it seems valuable to randomly record a day per month and send it to yourself a week later. Or in the case of this tool, select some period for extra review.
After reviewing a few days I learned to start focusing on one thing at a time.
It was cringeworthy to see how ineffective multitasking by switching between a few tasks was.
It suggests these kind of "mirroring" self-training practices and feedback might be useful across a whole range of endeavors, which sounds awesome. A super easy way to improve -- akin to people checking their reflection in a mirror -- that a bit of technology could really help with :)
It used to be "local by default" but now I think that might be changing to "local if you want".
They have also in the past been a perfect creator of commercial software as far as I know:
- generous free edition
- paid versions work forever with its current feature set
I typically set it to auto delete after 14 days and disallow screenshots from my ordinary browser (because meetings and passwords), Slack and Teams (meetings) etc.
Oh, I also made a tool to do this! Never open-sourced, since it’s an utter pain to set up and the UX is terrible, but amazingly useful all the same.
Incidentally: how does DownloadNet work? My tool uses a browser extension to send the full-text of each webpage to a server, but yours doesn’t seem to have a corresponding extension, so I can’t see how it would retrieve the text.
I love this API for almost everything browser related. I built my RBI product atop this (BrowserBox: https://dosyago.com), and I think it's a drastically underrated API.
Also, it works out of the box in Edge, Brave, Chromium, and many parts of CRDP are supported by Firefox and Safari^1
1: See for example: https://github.com/WebKit/webkit/tree/main/Source/JavaScript...
0: https://news.ycombinator.com/item?id=38809642
- reverse-proxy to protect proprietary code on your website from being inspected
- content accelerator (similar to mightyapp's original idea) where it's faster to render pages on a cloud vps with thick bandwidth than it is on a local device (in some cases at least!), and depending on the usage profile, it's even cheaper to serve that bandwidth, especially if you use additional video codecs.
- a framework to deliver web data collection and automation, agent authoring and intervention tooling on any device with no download
- cors-proxy to include and access content across domains for building design and test tools saas
- co-browsing for customer training and demonstration
and then there's the many cybersecurity and privacy ways including:
- standard remote browser isolation to isolate your device from zero day threats (an extra couple layers, requiring an even longer exploit chain, of protection, at least)
- to aid compliance and privacy by preventing insider data exfiltration in both directions when dealing with sensitive data (by blocking file transfer, copy paste, etc)
admittedly it's diverse, and hard make generalizations about customers.
one way i think is cool that i haven't seen yet (but want to get around to doing myself!) is a way to deliver "browser extensions" without needing either: 1) a compatible browser on your device, 2) the extension to come from a store, 3) any local download. In some sense it's safer as the extension does not run locally, but in other ways it's more dangerous as there's no central store. But it's very cool to explore, and what we really need for that is a great "developer API" that can expose a "browser extensions"-like layer.
One cool thing is that ad-blocking extensions built on BrowserBox will not be limited by the current restrictions that extensions developers face on existing platforms. The aim is to provide a powerful instrumentation api as simply as possible.
thank you for your question :)
btw - 42matters looks great! love your site design, really fantastic look. analytics is surely lucrative, i knew a similarly focused company also bearing the name 42 i'm sure. somewhere before anyway (but surely it had a different origin!). is 42 indicative of something special in analytics?
Turns out, on my slow computer it was faster to clean up a megabyte of HTML with regular expressions before giving it to Firefox than just rendering it as-is - by about 30 seconds per search result page.
Perhaps it's possible to sanitize often visited websites with DownloadNet? (currently getting aggravated by reddit hiding images via JS code to prevent download / viewing in another tab...)
Many years ago, I remember using a utility called: privoxy, on Linux/Unix, for that very purpose. No idea if it’s still viable, but thought I’d mention it, in case you’re serious?!
If you're passionate enough you could contribute a write-up, some code sketch or even a full PR of how this works. I'm sure you're probably too busy for that, or just not interested, and that's OK. I really appreciate the contribution you've already made with this idea.
I think allowing folks to filter, or sanitize (for whatever purpose really, sanity, focus, etc), sounds very useful.
Thanks! :)
Where did everything else go? This ran and disappeared like a miner.
the localhost:22120 didn't load anything.
I have tried Rewind in alpha/beta, it was cool, but it was never something I felt like I needed. That being said things change, and maybe I'll change my mind when it's part of the OS in a seamless way, but it's sketchy for as long as it's not offline: let alone the privacy consequences of running Rewind ;)
[1] https://dashcam.io