I made an open source Windows app to rewind and search everything on screen

haruharuha | 525 points

We built in almost 2 decades ago now (including the ability to scrub to a point in the past and resume execution from there)

http://www.cs.columbia.edu/~orenl/papers/sosp07-dejaview.pdf

Abstract: As users interact with the world and their peers through their computers, it is becoming important to archive and later search the information that they have viewed. We present DejaView, a personal virtual computer recorder that provides a complete record of a desktop computing experience that a user can playback, browse, search, and revive seamlessly. DejaView records visual output, checkpoints corresponding application and file system state, and captures displayed text with contextual information to index the record. A user can then browse and search the record for any visual information that has been displayed on the desktop, and revive and interact with the desktop computing state corresponding to any point in the record. DejaView combines display, operating system, and file system virtualization to provide its functionality transparently without any modifications to applications, window systems, or operating system kernels. We have implemented DejaView and evaluated its performance on real-world desktop applications. Our results demonstrate that DejaView can provide continuous low-overhead recording without any user noticeable performance degradation, and allows browsing, search and playback of records fast enough for interactive use.

compsciphd | 12 days ago

Similar project for macOS which is also open source:

https://rem.ing

https://github.com/jasonjmcghee/rem

Previously submitted on HN by the dev with some decent discussion 3 months ago here:

https://news.ycombinator.com/item?id=38787892

aspenmayer | 13 days ago

It would be cool to:

1) Make a Meta Smart Glasses take a photo every 2 seconds.

2) Send images to some server in the cloud.

3) Run OCR and object detection/labeling on these images.

4) Then present an app that allows searching (and chatting with) your past.

I could then ask the LLM things like:

1) Where did I left my wallet?

2) Did I get my credit card back after paying the restaurant yesterday? (ADHD things, don't ask)

3) What was written in my daughter's new tshirt today?

Bonus point if the app also records and transcribes audio so you could ask the LLM things like:

1) In the last meeting, what was the deadline that we settled on?

2) What was the phone number of that person I met in the park earlier today?

3) What was the name of the investor I met today?

Bonus bonus point if it has access to your phone calls to so it can transcribe and index what others said.

See Black Mirror episode "The Entire History of You": https://en.wikipedia.org/wiki/The_Entire_History_of_You

hu3 | 12 days ago

Has anyone built something like this using accessibility APIs instead of (or in addition to) OCR? It seems like a waste to OCR everything when you could just get the text directly from the accessibility APIs. Also seems like potentially a good way to connect LLMs to UIs, and something like this would be the way to collect the training data.

modeless | 12 days ago

> JavaScript must be enabled in order to use Notion.

> Please enable JavaScript to continue.

I run NoScript, and the way this block is constructed makes it impossible to actually enable JavaScript to run the site.

Please don't redirect to a static page, because that page doesn't have any of the JavaScript present to enable on a case-by-case basis, the the redirect happens so fast I have no chance to enable JavaScript on the main page.

Just enabling for notion.so itself is not sufficient to bypass the block.

tivert | 12 days ago

For Windows, there is also TimseSnapper [1], not open source, but the developer is sometimes here on HackerNews

[1] https://timesnapper.com/

karencarits | 12 days ago

I remember a few projects like this, the first I saw was called Savant Recall in 2014. But it failed to be selected for YC, so was set free as open-source. Napster co-founder Ritter picked it up, renamed it Atlas Recall (2016), gave it a new UI, secured $20M in funding. A year later it was suddenly shutdown. On LinkedIn says "acquired by Xinova". Another one I'd heard of was called Apse (2019).

msephton | 12 days ago

Looks very similar to https://apse.io/, which uses OCR to build a searchable index of everything you've seen on screen. I like the open source aspect of windrecorder.

gnutrino | 12 days ago

Per the GitHub readme, the video should be around 100-200 GB per year, not too bad.

layer8 | 13 days ago

Congrats on the great execution of this novel idea! Inspiring for everyone with a "why isn't there an app that does x" idea.

poisonborz | 13 days ago

This could easily be sold for $5/seat to giant corporations who want to stick spyware all over their employee workstations.

shiftpgdn | 12 days ago

Whoa, very cool project, I would be keen to try it out if it worked on Linux.

jstanley | 13 days ago

I have had this thought for ages and I'm stoked to see someone having built it.

It seems to create a huge risk for your data though. Any ideas about how you might go about securing against the application itself doing something untoward?

jackvalentine | 12 days ago

I hope this becomes hardware feature soon on laptops -- where we dont need to sacrifice the main CPU/memory/storage to have this functionality.

albert_e | 13 days ago

I wanted the same thing for Browser for a very long time. Since that is where 99% of all my information are consumed. But May be it does seems to fit in the OS in a broader prospective.

ksec | 13 days ago

Amazing that this was done by a non-professional dev. Huge cudos. (Tbh why not become a professional dev? You clearly have the skill and at least some interest.)

There's a huge miss in this implementation though: 95% of the time what is on screen is web-browsing. So to go from nicely formatted markup with title tags -> video -> OCR is clearly missing am ore obvious path (either a proxy or browser extension).

bluelightning2k | 12 days ago

There was this app, I don't remember the name, that was similar I think for MacOS. It would record the entire timeline, and you could just "scroll back in time - in real time btw-" to a specific date/time and see the open windows you had and what not.

I distinctly remember seeing it somewhere (I think it was here), but I can't find what the app was called, despite all teh gooling.

lannisterstark | 12 days ago

The site is not usable on Firefox even after I temporarily allowed JS to run in my NoScript setup. Perhaps it wants me to disable uBlock Origin as well? Not gonna happen, so there is that. For me this is a no go area regardless of how cool the app is.

unnouinceput | 12 days ago

This is great start. I've been wanting something like this for a while, 10-20gb per month feels like a lot though. Feel like archiving at quarter resolution and black and white and 32bit rate sound and eventually have AI upscale a good compromise.

maxglute | 12 days ago

TIL you can screen record with ffmpeg

lazylion2 | 12 days ago

This will eventually be an AR app to do the same thing for you daily life.

djmips | 12 days ago

Here is a similar open source project: https://github.com/Vincent-liuwingsang/unlost

dmezzetti | 12 days ago

Anyone know if there’s an audio equivalent of this software?

ppqqrr | 12 days ago

I would be curious if anybody feels that such a tool wouldn't be too much a danger as spyware. In particular from a Chinese developer.

oezi | 12 days ago

Great, ever since rewind.ai came out I was longing for something similar (MacOS only for now)

Cilvic | 13 days ago

this is ingenious, and most likely will open a thought process for the implementation of similar but extremely lightweight mechanisms in RATs and other malwares (like Rootkits)

fnp84 | 12 days ago

Nice idea, really, but it has the smell of a visual keylogger.

okokwhatever | 12 days ago

I can't think of any usage for that project other than spying for the employees. Just slightly modify the saving mechanism to send it to the corporate cloud and voila. AI profiling. Perfect for harassment at work and layoffs.

cynicalsecurity | 12 days ago

> Oops! Something went wrong.

> Please refresh and try again or.

account42 | 12 days ago

how do i download it? i wanna try the msi not the command line

anon115 | 12 days ago

> Download ffmpeg (the download file name is: ffmpeg-master-latest-win64-gpl-shared.zip), extract all files in bin directory(excluding the bin directory itself) to C:\Windows\System32 (or other directories located in PATH)

Copying ffmpeg to C:\Windows\System32 doesn't seem to be the correct way to install it.

maxloh | 13 days ago

A long time ago, someone got "cryofreeze" working on Linux processes, where you could freeze a process to disk and unfreeze it later .. but this was purely experimental and doesn't seem to have persisted.

Anyway, in my lab environment where I had this running .. over a decade ago now I guess .. I set up scripts to automatically cryofreeze the daemon processes I was writing, so I could indeed reset to the state in time, of interest during testing. This lab got re-comissioned for other things, and a needed kernel upgrade broke cryofreeze, and I never got back to it - but I have often wondered about it, as a temporal interface to some things would make for a whole new world of useful UI and other interation paradigms to explore.

I remember there was something like this possible on WANG and Tandem systems back in the 80's, and it always has kind of piqued my interest as to why this isn't still considered a thing. Well, I guess syscall complexity has vastly changed since WANG and Tandem were around, lol.

Anyway, I'd love to be able to do this on Linux again - I keep thinking to catch up with the state of the art of process freezing/unfreezing, so this has motivated me to do this - although I do confess that, as principally a Lua/C developer in my chosen market (embedded), I attain this re-playability in other ways (state sync'ing) which also allows me to move processes to other systems, relatively smoothly, also.

Still, would love to have this for normal Linux processes, out of the box. Am I ignoring an obvious way to do this?

helpfulContrib | 12 days ago

[dead]

nukeyoular | 12 days ago