AI prompts
base on An open source approach to locally record and enable searching everything you view on your Mac. ![image](https://github.com/jasonjmcghee/rem/assets/1522149/bc7368dc-90b5-42a3-abba-9d365b368ddb)
# rem
🧠 Remember everything. (very alpha - [download anyway](https://github.com/jasonjmcghee/rem/releases))
---
## 🚨 Looking for contributions / help! 🚨
I would love to keep this project alive and growing, but can't do it alone.
If you're at all interested in contributing, please feel free to reach out, start a discussion, open a PR, look at issues, look at roadmap below, etc.
Something not working properly? There's no telemtry or tracking, so I won't know! Please log an issue or take a crack at fixing it yourself and
submitting a PR! Have feature ideas? Log an issue!
Want to learn more about the code?
Here's the [Generated Wiki](https://wiki.mutable.ai/jasonjmcghee/rem)
---
### Original Demo
<a href="https://www.loom.com/share/091a48b318f04f22bdada62716298948">
<img style="max-width:300px;" src="https://cdn.loom.com/sessions/thumbnails/091a48b318f04f22bdada62716298948-with-play.gif">
</a>
An open source approach to locally record everything you view on your Mac (prefer other platforms? come help build [xrem](https://github.com/jasonjmcghee/xrem), cross-platform version of this project).
_Note: Only tested on Apple Silicon, but [there is now an intel build](https://github.com/jasonjmcghee/rem/releases)
---
### This is an early version (rem could use _your_ help!)
Please log any bugs / issues you find!
Looking at this code and grimacing? Want to help turn this project into something awesome? Please contribute. I haven't written Swift since 2017. I'm sure you'll write better code than me.
---
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 telemetry has the potential to
leak private info.
This is 100% local. Please, read the code yourself.
Also, that means there is no tracking / analytics of any kind, which means I don't know you're running into bugs when you do. So please report any / all you find!
## Features:
- [x] Automatically take a screenshot every 2 seconds, recognizing all text, using an efficient approach in terms of space and energy
- [x] Go back in time (full-screen scrubber of everything you've viewed)
- [x] Copy text from back in time
- [x] Search everything you've viewed with keyword search (and filter by application)
- [x] Easily grab recent context for use with LLMs
- [x] [Intel build](https://github.com/jasonjmcghee/rem/releases) (please help test!)
- [x] It "works" with external / multiple monitors connected
- [ ] Natural language search / agent interaction via updating local vector embedding
- [I've also been exploring novel approaches to vector dbs](https://github.com/jasonjmcghee/portable-hnsw)
- [ ] Novel search experiences like spatial / similar images
- [ ] More search filters (by time, etc.)
- [ ] Fine-grained purging / trimming / selecting recording
- [ ] Better / First-class multi-monitor support
## Getting Started
- [Download the latest release](https://github.com/jasonjmcghee/rem/releases), or build it yourself!
- Launch the app
- Click the brain
- Click "Start Remembering"
- Grant it access to "Screen Recording" i.e. take screenshots every 2 seconds
- Click "Open timeline" or "Cmd + Scroll Up" to open the timeline view
- Scroll left or right to move in time
- Click "Search" to open the search view
- Search your history and click on a thumbnail to go there in the timeline
- In timeline, give Live Text a second and then you can select text
- Click "Copy Recent Context" to grab a prompt for interacting with an LLM with what you've seen recently as context
- Click "Show Me My Data" to open a finder window where `rem` stores SQLite db + video recordings
- Click "Purge All Data" to delete everything (useful if something breaks)
(that should be all that's needed)
## Build it yourself
- Clone the repo `git clone --recursive -j8 https://github.com/jasonjmcghee/rem.git` or run `git submodule update --init --recursive` after cloning
- Open project in Xcode
- Product > Archive
- Distribute App
- Custom
- Copy App
### FAQ
- Where is my data?
- Click "Show Me My Data" in the tray / status icon menu
- Currently it is stored in: `~/Library/Containers/today.jason.rem/Data/Library/Application Support/today.jason.rem`
- It was originally: `~/Library/Application\ Support/today.jason.rem/`
### (Never)AQ
- Wow that logo is so great, you're an artist. Can I see your figma?
- So nice of you to say, sure [here it is](https://www.figma.com/file/Rr2vUXjsRb9SJMssQbEllA/rem-icons?type=design&node-id=0%3A1&mode=design&t=QhtJ7L1z4rIXTG4M-1)
### XCode + copy / paste from history:
https://github.com/jasonjmcghee/rem/assets/1522149/97acacb9-b8c6-4b9c-b452-5423fb4e4372
", Assign "at most 3 tags" to the expected json: {"id":"6474","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"