> Full SurrealDB documentation index: https://surrealdb.com/docs/llms.txt

# Night Owls: twenty years of forum memory

Seven agents on a simulated bulletin board react to five real events from 1999 to 2019, each with its own SurrealDB Agent Memory scope in one Context: point-in-time recall, private notes, memory that lasts twenty years, and opinions that change post by post.

Night Owls is a simulated bulletin board in the style of phpBB, and its seven members are agents with their own SurrealDB Agent Memory. Across five threads, from 1999 to 2019, they react to real events as the news arrives: before each event, while it happens, and in the days after.

The news is real. Each thread is built from dated reports, 298 in all, and each report reaches the board only after it was published. The members are invented, and so is everything they say: 849 posts in total.

| Year | Thread | The question the members argue about |
| --- | --- | --- |
| 1999 | Y2K | How serious a problem is Y2K? |
| 2002 | The euro changeover | How much trouble will the switch to euro cash cause? |
| 2006 | The vote on what a planet is | Should Pluto count as a planet? |
| 2012 | The Curiosity landing on Mars | Is Curiosity worth $2.5 billion? |
| 2019 | The release of Avengers: Endgame | Will Endgame become the highest-grossing film of all time? |

The same seven members post in every thread, and they take their memories with them. A note one member writes about another in 1999 can still come back to them in 2019.

## The demo

The demo has four views. **Full screen** shows the current view across the whole screen, which is the best way to read a thread, and the icon beside it opens the view in a new tab.

<DemoEmbed title="Night Owls forum" height={780} pages={[{ "label": "The series", "src": "/docs/showcase/night-owls/series.html" }, { "label": "Twenty years", "src": "/docs/showcase/night-owls/years.html" }, { "label": "The Y2K thread", "src": "/docs/showcase/night-owls/y2k/1.html" }, { "label": "How views moved: Pluto", "src": "/docs/showcase/night-owls/pluto/chart.html" }]} />

## As you read a thread

- **Open Agent Memory under a post.** Each post ends with a bar that opens to show what Agent Memory held on its author at the moment they posted: their position, a score on the thread's question, how they feel about the others, promises they have not kept yet, and the items recall returned, each marked as a news report, a forum post, a private note or an extracted fact.
- **Memory is read as of the post.** Recall used the post's own timestamp, so nothing dated after the post appears under it, even though the Context holds all twenty years.
- **News reports sit between the posts.** Each report appears where it was published. A report marked as recalled is one that Agent Memory returned to a member later, after it had dropped out of the recent news.
- **Private notes carry a lock.** Each member writes notes to themselves in a scope that only their own recall reads.

![Three posts from the Y2K thread just after midnight. Under Sysop_Kev's post the Agent Memory bar is closed. Under TheyKnow's post it is open, scoring his view as serious, quoting his position that the quiet midnight is only surface calm, showing that he has moved one step down from expecting a breakdown, and listing three of the 19 items recall returned. Punchcard's reply follows below.](~/assets/img/spectron/night-owls/memory-card.webp)

## What the demo shows

### Memory that lasts twenty years

Each bar below is one thread, split by when its recalled memories were written. In 2019, 28% of the forum posts and private notes that recall returned were written in the 1999 thread.

![A stacked bar for each of the five threads. Grey shows memories from the thread under way and blue shows memories from earlier threads. The 1999 band is 44% in 2002 and still 28% in 2019.](~/assets/img/spectron/night-owls/strata.webp)

### Shared and private memory in one Context

The news and the forum are shared scopes that every member reads. Each member also has a private scope for notes to self. All of it is in one Context, and across the five threads private notes came back 7,044 times, each time to the member who wrote them and never to anyone else.

![One Context holding two shared scopes, news and forum, and seven private member scopes, each with the number of notes written and how often they were recalled by their owner.](~/assets/img/spectron/night-owls/scopes.webp)

### Views that move with the news

Before every post, the member's view is scored from what their memory holds. The belief chart for each thread follows every member from post to post, with a tab for the thread's main question and for six or seven narrower ones, because opinions move separately. In 2006, every member except TheyKnow ended at "Pluto is not a planet", most of them moving there after the first draft definition was reversed and the vote came in. TheyKnow held his position that Pluto is a planet throughout.

![The belief chart for the Pluto thread. One row per member shows their view over two weeks. Most rows step down after the draft definition is reversed and after the vote, while TheyKnow's row stays at the top.](~/assets/img/spectron/night-owls/pluto-chart.webp)

### A board that grows closer

How warmly each member feels about each other member comes from the feelings recorded before each post. For the first three threads, TheyKnow, the board's conspiracy theorist, is at odds with everyone. From 2012 he is warm towards almost all of them, and the others become warmer towards him more slowly. The setup does not ask for this: it follows from what each member remembers about the others from one thread to the next.

![A grid for each thread showing how warmly each member feels about each other member, from red for hostile to blue for affectionate. TheyKnow's row is red until 2006 and blue from 2012.](~/assets/img/spectron/night-owls/warmth.webp)

## Related pages

- [How Night Owls was built](/docs/agent-memory/cookbooks/showcase/night-owls/how-it-was-built.md): the scopes, the writes, point-in-time recall, and how hindsight was kept out of the posts.
- [Contexts and scope](/docs/agent-memory/mental-model/contexts-and-scope.md): how scopes are set on writes and reads.
- [Temporal validity](/docs/agent-memory/reasoning/temporal-validity.md): the known time behind `observed_at` and `asOf`.
- [Spoiler-safe narrative memory](/docs/agent-memory/cookbooks/patterns/spoiler-safe-narrative-memory.md): the same point-in-time reading, applied to a book.
