September 6Sep 6 Hindsight is a memory server for AI agents. Your agents save what they work out to it and search it back later, so they stop re-deriving the same decisions every session. It speaks MCP, so anything with MCP support can talk to it: Claude Code, Cursor, Codex, Pi, Grok CLI, and the rest.I put a template together for it. It runs the official upstream image, which carries the API, the web dashboard, the search models and its own PostgreSQL, so there is nothing else to stand up alongside it.Setup guide: https://github.com/PikkonMG/unraid-docker-templates/blob/main/docs/HINDSIGHT.mdProject: https://github.com/vectorize-io/hindsightUpstream docs: https://hindsight.vectorize.ioDo this before you hit ApplyThe container runs as uid 1000 and will not chown its own appdata, so make the folder yourself first. On the Unraid terminal:mkdir -p /mnt/user/appdata/hindsight chown -R 1000:1000 /mnt/user/appdata/hindsight chmod 700 /mnt/user/appdata/hindsightSkip it and the container comes up, then immediately says /home/hindsight/.pg0 is not writable. Stop it, run those lines, start it again. It does not use the usual PUID and PGID variables.It needs a modelHindsight uses a language model of its own to pull facts out of whatever your agents send it. That is separate from whatever model your agents are running on, and it never talks to you directly.Point it at an Ollama box on your LAN, or paste in a key for OpenAI, Anthropic, Gemini, Groq, OpenRouter, DeepSeek or Ollama Cloud. Going the Ollama route, the model has to support tool calling or the reflect feature will not work. Use your server IP in the endpoint field, not localhost, since localhost inside the container is the container.Ports and keys8888 is the API and the MCP endpoint. 9999 is the dashboard.There are three keys. Memory API key and Web UI backend key have to hold the same value, and that is the one your agents send as a bearer token. Web UI login key is a separate one, and it is what you type to get into the dashboard.Connecting your agentsUpstream ships an installer that detects the agents you already have and wires them all up. Run it on the machine you code from, not on the server. I have only run this on Linux, so I cannot tell you how it behaves on Windows or Mac.npx @vectorize-io/hindsight-coding-agents install all \ --server self-hosted \ --api-url http://MY-UNRAID-IP:8888 \ --api-token MY-MEMORY-API-KEYThat covers Claude Code, Codex, Cursor, opencode, Pi and a few more. After it runs, each repo gets its own memory bank automatically, seeded from your commit history.Anything it does not cover is a plain MCP endpoint. One bank per project, named in the URL:http://MY-UNRAID-IP:8888/mcp/MYBANK/with an Authorization: Bearer MYTOKEN header. The guide has the config block for Cursor, Oh My Pi, plain Pi, Grok CLI and Claude Desktop, which is the one awkward case because its connector dialog has nowhere to put a bearer token.First save on a cold model takes a while, mine was about half a minute on a local one, because Ollama has to load the model before it can do anything. It settles down after that.BackupsStorage lives at /mnt/user/appdata/hindsight. The database runs inside the container but writes out to there, so it survives restarts, updates and rebuilds. Stop the container before you back that folder up.Post here if something breaks on the Unraid side and I will take a look. Bugs in Hindsight itself are better raised on their tracker: https://github.com/vectorize-io/hindsight/issues
September 18Sep 18 Author Small template update, and worth grabbing if you run a local model. I kept getting reflect timeouts when Hindsight tried to rebuild a memory page, and it turns out two of its defaults are the cause.Hindsight gives a page rebuild 300 seconds, and lets it gather up to 100,000 tokens of text before it writes anything. Fine on a hosted model. On a local one the rebuild sails past 300 seconds and gets killed, and 100,000 tokens is way past what a small model can hold, so the prompt gets cut and you end up with a worse page.Both of those are now settings on the main page, along with the Ollama window size they have to fit inside:FieldDefaultWhat it doesReflect time limit1200Seconds a page rebuild may run before it is abandonedReflect max context24000Most tokens a rebuild gathers before writing the pageOllama context size32768Prompt window. Keep it above Reflect max contextThe two reflect fields will not accept a blank. Hindsight reads them as plain numbers, and an empty value stops the container from starting, so Unraid marks them required. Ollama context size can be left blank if you are not using Ollama.Move all three together to suit your hardware. A bigger window costs more VRAM, so do not just crank it.Already running it?Here is the annoying part. Unraid will not push new fields into a container you already made, so these will not turn up on their own. You have to add them yourself. Nothing gets lost either way, since your memories sit in /mnt/user/appdata/hindsight and the container never touches them.Adding them by hand1. Docker tab, click the Hindsight icon, choose Edit.2. Scroll to the bottom and click Add another Path, Port, Variable, Label or Device.3. A small window opens. Set Config Type to Variable, then fill in Name, Key and Value from one row of the table below. Leave Default Value and Display alone.4. Click Add. The window closes and the field appears in the list.5. Repeat steps 2 to 4 for the other rows.6. When all three are in, click Apply at the bottom. The container restarts on its own.NameKeyValueReflect time limitHINDSIGHT_API_REFLECT_WALL_TIMEOUT1200Reflect max contextHINDSIGHT_API_REFLECT_MAX_CONTEXT_TOKENS24000Ollama context sizeHINDSIGHT_API_LLM_OLLAMA_NUM_CTX32768Name is only the label you see on the Unraid page, so call it whatever you like. Key has to match exactly. If you already have Ollama context size in there, do not add a second one, just change the value to 32768.Or start fresh insteadFaster if you have not changed much. Remove the container and leave the appdata folder alone when it asks. Add it back from the template, put your keys in again, and all three fields are already there.Did it work?Watch the log after it restarts. A reflect that used to die at 300 seconds should run all the way through now. Still timing out? Push Reflect time limit higher. If the pages come out thin or look like they are missing things you know are in there, your model window is probably under 32768, so bring Ollama context size and Reflect max context down to match whatever it actually is.Template and guide are in the first post.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.