Skip to content

Guide

Your Obsidian vault, read from Foundry.

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.

Read where it sits, never copied across

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.

Connecting the vault

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.

  1. Install the plugin

    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.

  2. Switch on the plain HTTP server

    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.

  3. Copy the API key

    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.

  4. Point Familiar at it

    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.

  5. Decide what it may read

    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 Vault

Leave the Folders field empty and the whole vault is readable. That is the default, so it is worth the minute before your first session.

Where this works, and where it does not

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.

Whether Familiar can reach an Obsidian vault, by setup
Your setupWhat happens
Foundry running on the same computer you play fromWorks, with nothing to allow. The page and the vault are both on the local address.
Foundry hosted, on a service or your own domainWorks. 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 gameNo. 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 onPossible, 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 openNothing to read. The server lives inside the Obsidian window, so it goes when the window goes.
A player rather than the GMNot 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.

What the AI actually sees

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.

How vault content arrives when the AI reads a note
In your vaultWhat comes back
Prose, headings, lists, tables, calloutsThe text itself. This is the bulk of most vaults, and all of it comes through.
Frontmatter, tags, and wikilinksVerbatim, 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 blockThe 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 noteThe 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 pluginThe 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, imagesNothing. Markdown files are the only thing listed and the only thing readable.
An Excalidraw drawingIts 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.

Hiding a thing is not the same as excluding it

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.

  • An empty Folders field means the whole vault. There is no implied default scope and no fence already standing.
  • Setting a folder list switches off the tag browser. Obsidian reports tags for the whole vault or not at all, so Familiar refuses the tool rather than leaking counts from folders you excluded. Search still works normally.
  • Provider keys are the one thing stripped out of anything the vault returns, on the reasoning that a personal vault is exactly where a pasted key ends up. Nothing else is filtered.

Writing notes it can find

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.

  • Name a note by what is in it. "Session 12" says nothing. "Session 12, Harrowmoor, Kaelen turns on the party" says who, where, and what before the file is even opened.
  • Spell names out in the prose. A line that reads "he finally admits it" is invisible to a search for the NPC. Put the name near the sentence that needs it.
  • Keep load-bearing facts in the text, not only in properties. Frontmatter does come through, but it arrives as its own block, away from the paragraph that explains why it matters.
  • Use the aliases property. It is stored in the file, which makes it a free synonym list: the nickname your players actually say will now find the note you filed under a formal title.
  • One subject per note, with headings. A single page holding six locations returns one hit and a wall of text. Six pages return the right one.
  • If you live in Dataview, write out the results you actually need at the table. A query that draws a perfect table on screen leaves an empty page on disk.

What still belongs in Foundry

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 Vault
  • Journals & Notes

When it comes back empty

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

Common vault connection problems and what to check
What you seeWhat to check
Cannot reach the notes vaultObsidian 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 rejectedRe-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 MacmacOS 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 vaultEach 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 CORSThat 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 updateThe plugin ships often and has shipped regressions on paths inside subfolders before. Check its release notes and update again.
Nothing works on a tabletThe plugin is desktop only, and its author has declined mobile support. There is no path on iOS or Android.

Try it on tonight's prep

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.

More in Run your game

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.