Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Support] Hindsight - Agent memory system

Featured Replies

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.md
Project:
https://github.com/vectorize-io/hindsight
Upstream docs:
https://hindsight.vectorize.io

Do this before you hit Apply

The 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/hindsight

Skip 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 model

Hindsight 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 keys

8888 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 agents

Upstream 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-KEY

That 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.

Backups

Storage 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

Screenshot_20260905_233054.png

  • Author
Reserve.
  • 2 weeks later...
  • 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:

Field

Default

What it does

Reflect time limit

1200

Seconds a page rebuild may run before it is abandoned

Reflect max context

24000

Most tokens a rebuild gathers before writing the page

Ollama context size

32768

Prompt window. Keep it above Reflect max context

The 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 hand

1. 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.

Name

Key

Value

Reflect time limit

HINDSIGHT_API_REFLECT_WALL_TIMEOUT

1200

Reflect max context

HINDSIGHT_API_REFLECT_MAX_CONTEXT_TOKENS

24000

Ollama context size

HINDSIGHT_API_LLM_OLLAMA_NUM_CTX

32768

Name 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 instead

Faster 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.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.