Transcribing your sessions
SoonSpeak instead of type. Familiar transcribes the session in real time and saves it to a searchable Foundry journal you can edit later.
Guide
Your prep already lives in Obsidian, and it can stay there. Familiar reads that vault from inside Foundry, read-only, through Obsidian's community Local REST API plugin, so the AI can search your notes while you play. Nothing is copied into Foundry, and you choose which folders it may open.
The usual way to get Obsidian notes into a Foundry game is to import them: something walks the vault and writes a journal entry per note. That works, and then you own two copies of everything. Edit a note, re-import. Forget, and the AI is reading last month.
Familiar takes the other route. While Obsidian is open it talks to the vault directly and reads files on demand: list what is in a folder, open one note, search every note for a phrase, browse your tags by how often you use them. The vault stays the only copy. Nothing is cached either, so what comes back is what you saved a minute ago.
The cost of that is honest and small. Obsidian has to be running, normally on the machine you play from, and it has to have the right vault open. Close it and the notes are not there.
Read-only is not a setting you could switch the wrong way. There is no write path in the product at all, so nothing the AI does can change, move, or delete a note.
Obsidian has no API of its own, so the connection runs through a community plugin. You install it, turn on its plain HTTP server, and hand Familiar the key it prints. Five minutes of settings, once.
In Obsidian, open Settings and go to Community plugins. If you are still in Restricted mode, turn community plugins on. Then Browse, search for Local REST API, and install it. Check the author before you click: the one you want is published by coddingtonbear, and it now shows in the catalogue as "Local REST API with MCP". Enable it once it is installed.
In the plugin settings, enable the non-encrypted HTTP server. It is off by default, and the encrypted port it prefers instead carries a certificate the plugin signs itself, which a browser will refuse. The HTTP server listens on your own machine only, so nothing crosses the network.
The key sits on the plugin's main settings page with a copy button beside it. Treat it as a password: anything holding that key has full read and write over the entire vault, which is more than Familiar itself will ever use. It does not belong in a screenshot, a pasted config, or a shared repo.
In Foundry, open Familiar's settings and pick the Notes tab. Turn on the vault, then press Use default to fill in the local address: the field starts empty, and the address you can see in it is only a placeholder. Paste the key and press Test connection with Obsidian still running. The test makes the same call the AI's tools do, so a green result means the vault is genuinely reachable, not just that something is listening on the port.
The Folders field takes a comma-separated list, something like Campaigns/Ravenloft, Session Notes. Name folders there and the vault outside them is out of reach: a read is refused and a search never returns it. Subfolders come along automatically. Capitalisation has to match what Obsidian shows, and the connection test does not check this field, so a typo here still tests green and then refuses every read.
Notes VaultLeave the Folders field empty and the whole vault is readable. That is the default, so it is worth the minute before your first session.
One fact settles most of the questions here: Familiar reads the vault from your browser, not from the Foundry server. The request leaves the same machine your Foundry tab is open on, which is normally the machine Obsidian is running on too. Where Foundry itself is hosted matters much less than people expect.
| Your setup | What happens |
|---|---|
| Foundry running on the same computer you play from | Works, with nothing to allow. The page and the vault are both on the local address. |
| Foundry hosted, on a service or your own domain | Works. The reading happens in your browser, so your host never touches the vault. Chrome asks once whether the page may reach devices on your local network. Allow it. Dismiss that prompt and the failure comes back looking like a CORS error. |
| Safari, on a hosted game | No. Safari will not let a hosted page open a connection to your own machine. Play in Chrome, Edge, or Firefox, or run Foundry on the desktop app. |
| Obsidian on a different computer from the one you play on | Possible, with one hard limit. You would change the plugin's binding host, open the port on your firewall, and accept that unencrypted vault traffic now crosses your network. The limit: this only works if your Foundry page is not on https. Browsers make an exception for your own machine, never for another address on your network. Worth it only if you cannot move the vault. |
| Obsidian closed, or a different vault open | Nothing to read. The server lives inside the Obsidian window, so it goes when the window goes. |
| A player rather than the GM | Not on their own. The key and the connection belong to the GM's browser. With Table Chat on, a player's @familiar question is answered with the GM's tools, vault reads included, so switch it off where your notes would spoil the plot. |
Driving Foundry from Claude, ChatGPT, or Gemini over MCP does not change any of this. Those clients reach the vault through your open Foundry tab like every other tool, so the tab has to be there.
Obsidian shows you a rendered page. The file on disk is often a different thing, and the file is what gets read. That gap is where a vault surprises people. A session page that looks finished on screen can arrive nearly empty.
A note comes back as raw markdown, exactly as you typed it, with nothing parsed on the way. A very long note arrives a chunk at a time, and the AI is told there is more to fetch. What that includes and what it leaves out is worth knowing before you rely on it mid-scene.
One way to see all of this at once: open a note in Obsidian and switch to source mode. What is on that screen is what the AI gets.
| In your vault | What comes back |
|---|---|
| Prose, headings, lists, tables, callouts | The text itself. This is the bulk of most vaults, and all of it comes through. |
| Frontmatter, tags, and wikilinks | Verbatim, as you wrote them. A name inside a wikilink is still readable text, so an NPC linked by name is an NPC the AI can search for. |
| A Dataview or Bases block | The query, not the table it draws. Those rows are painted when you open the note and were never in the file. If a note relies on one, the facts it displays live somewhere else. |
| An embed of another note | The embed line only. A session page assembled entirely out of embeds reads as a list of references and no content. |
| A statblock pulled from a bestiary plugin | The lookup line. Plugin bestiaries are stored in Obsidian's own config folder, which is not part of the vault the plugin serves. Stats typed into the note do come through. |
| Canvas boards, PDFs, images | Nothing. Markdown files are the only thing listed and the only thing readable. |
| An Excalidraw drawing | Its file, because the plugin saves drawings as markdown rather than as their own format. Most of what comes back is compressed data, though the text labels you typed onto the drawing do come through. Mainly this means drawings show up in listings. |
GMs hide things in a vault constantly. The twist goes inside a percent-sign comment, the reveal sits in a collapsed callout, the spoiler folder goes into Obsidian's Excluded files list. Every one of those hides text from your eyes in reading view. None of them takes it out of the file. The plugin reads the file. Obsidian's exclusion setting in particular is a search and display preference, not a fence.
So the boundary that actually holds is the one at file level: the Folders field. Name what it may read, and the rest of the vault cannot be listed, opened, or searched. If the twist has to stay off limits, it needs to be in a folder you left out, or in a different vault entirely.
Whichever way you set that, what the AI does read goes to the provider you connected, the same as anything else it reads in your world. If that is the sticking point, running the model on your own machine keeps your notes on your own machine.
The search is plain text. No operators, no fuzzy matching, no sense of what a note is about: it looks for the characters you typed, in the notes it is allowed to reach. The other half is quieter and matters more. When the AI lists a folder it gets file paths and nothing else, so your filenames are the only thing it has to go on when it decides which note to open.
Neither of those asks for a rebuilt vault. They ask for a handful of habits that make a note findable by something that cannot see your graph.
A vault is where prep gets written. It is not where the game runs, and Familiar keeps the two apart on purpose.
The vault is read on demand and nothing more. Notes are not folded into the campaign search, they are not saved into the memory bank, and they do not carry between sessions on their own. Ask about your notes and the AI goes and reads them. It has not read them already, and it will not go looking unprompted.
Anything the table touches still has to be a real Foundry document. A monster the AI rolls for is an actor sheet, not a paragraph. A battlemap is a scene. A handout the players open is a journal page. The usual path from one to the other is to have the AI read the note and build the Foundry document from it, which is also the reason the vault tools never needed a write side.
Notes VaultJournals & NotesMost vault problems are one of a handful, and the error Familiar shows usually names the right one. These are the ones that send people looking in the wrong place.
| What you see | What to check |
|---|---|
| Cannot reach the notes vault | Obsidian is closed, the open vault is not the one with the plugin, or the HTTP server quietly failed to start. It does not always rebind after an Obsidian restart even though the toggle still reads on, and switching it off and back on fixes that. |
| The key was rejected | Re-copy it from the plugin settings. Resetting the plugin's cryptography issues a new key, so an old one pasted into Familiar stops working. |
| It worked all session, then went quiet, on a Mac | macOS suspends background windows. Obsidian sitting behind a full-screen Foundry stops answering. Turn App Nap off for Obsidian with defaults write md.obsidian NSAppSleepDisabled -bool YES, then restart it. |
| Requests time out on a large vault | Each call has a few seconds to finish, and walking a deep tree from the vault root can spend all of it. Point the question at a folder, or set a folder list so it starts lower down. |
| A hosted game fails and the console blames CORS | That is usually the browser refusing to let a hosted page reach your machine, not a real CORS problem. Click the site icon at the left of the address bar, open Site settings, allow local network access, then reload Foundry. |
| Notes started returning not-found after an update | The plugin ships often and has shipped regressions on paths inside subfolders before. Check its release notes and update again. |
| Nothing works on a tablet | The plugin is desktop only, and its author has declined mobile support. There is no path on iOS or Android. |
Connect the vault, then ask for something you know is in there: what your notes say about the place the party is heading, or who they promised what to last week. One question tells you whether the plumbing works and whether the note you had in mind is written down at all.
If it comes back empty, the two likely reasons are both on this page. Obsidian is not running, or the note you were thinking of is drawn rather than written.
Good AI D&D is good prep. Structure a published adventure, then hand the running to the AI.
Lay a published adventure into Foundry as journals, sheets, and a one-page outline, so the AI has the pages to run from.
Give an NPC who they are, what they know, what they want, and how they speak. Anchored to that, the AI voices them and fills the small edges itself.
A long campaign overflows any context window. Keep a searchable record in Foundry so the AI reads from your notes, not from a fading window.
Run combat with an AI that cannot cheat. Foundry's own dice enforce range, damage, and conditions, while you stay the DM.
Let the AI speak. Set a narrator voice and character voices, bring your own provider key, and Familiar voices each line in your browser as the scene plays.
Speak instead of type. Familiar transcribes the session in real time and saves it to a searchable Foundry journal you can edit later.
New to Familiar? I'm Ryan, the person who built it. The Discord is small and brand new, so if you join now I'll help you get set up myself.