A research agent for your vault. Runs locally in Docker against your own Anthropic API key.
A research agent for your vault. Runs locally in Docker against your own Anthropic API key.
sk-ant-...
)Once the plugin is installed, configured, and the local Docker server is running:
/
in the input to browse the built-in workflows — /deepresearch
, /lit
(literature review), /audit
, /recipe
, /review
, and several others. Each one opens a small form with the arguments it expects (e.g. a topic
field).<vault>/Feynman/outputs/
, <vault>/Feynman/notes/
, and <vault>/Feynman/papers/
as regular markdown files. Click the artifact link in the chat panel to jump straight to the file in Obsidian.You can also invoke a workflow directly from the command palette (e.g. Feynman: Deep research…) without opening the chat panel first — useful when a vault note is the topic and you want to pass activeFile
or the current selection as context.
git clone https://github.com/icarian-systems/feynman-research-agent.git
cd feynman-research-agent
npm install
npm run build
Then copy main.js
, manifest.json
, and styles.css
into your vault at:
<vault>/.obsidian/plugins/feynman-research-agent/
Reload Obsidian, open Settings → Community plugins, and enable Feynman.
If you'd rather not build locally, install via BRAT: add this repository as a beta plugin and BRAT will fetch the release artifacts for you.
After enabling the plugin, follow docs/SETUP.md to pull the Docker image, configure your Anthropic key, and run your first workflow.
Read this carefully before using the plugin.
~/.feynman/secrets.json
(file mode 0600
). The plugin does not encrypt this file. Because secrets live outside the vault, they are <vault>/.obsidian/plugins/feynman-research-agent/data.json
.127.0.0.1
. There is no cloud/managed-Modal tier shipped in v1 — that mode is disabled in settings until a later release.FEYNMAN_AUTH_TOKEN
and writes it into the container env-file. Without that header any other process on your machine (browser tabs included) gets 401 Unauthorized
from http://127.0.0.1:7777
. Self-hosted users must set the same env var on their server and paste the value into Settings.http://
for any host that isn't 127.0.0.1
, localhost
, or ::1
, so the bearer token doesn't fly in plaintext.api.getwaitlist.com
If you don't want your keys leaving the device on which you typed them, the default setup already keeps them on-device: ~/.feynman/secrets.json
is outside any vault and is never touched by Obsidian Sync.
The plugin uses one non-public API to deep-link into its own settings tab from inline "Open settings" affordances (the app.setting.open()
/ app.setting.openTabById(...)
pair). The calls are wrapped in try/catch
; if a future Obsidian release removes that surface the plugin falls back to a Notice that says "Open Settings → Community plugins → Feynman". No functionality is lost; the deep link just becomes a manual click.
MIT.