AI agents for Obsidian
A local-first vault — a natural fit for a local-first runtime. AGNT connects to Obsidian so agents can read what happens there, reason about it, and act — with a receipt for every run.
Research Analyst is a ready-made agent that works in Obsidian — free, and it runs on your machine.
Obsidian and AGNT, in brief
| What it does | Lets an AGNT agent read from and act in Obsidian. |
|---|---|
| Connects with | A local endpoint on your own machine |
| AGNT node | obsidian-api |
| Runs when | A note is created or changed |
| Typical build time | Two minutes |
| Where data goes | Nowhere by default — AGNT runs on your machine and credentials never leave it. |
What you can automate
Reacts when…
- a note is created or changed
Agents can…
- create and update notes
- build daily summaries
- link related notes
Teams use it for
- research findings filed into your vault
- daily notes assembled from real activity
- a second brain agents help maintain
Build it: the Obsidian workflow
Design goal for Obsidian: research findings filed into your vault; daily notes assembled from real activity; a second brain agents help maintain. The template below supplies configurable nodes, not the complete logic for those goals.
Use this Obsidian setup template to arrange the schedule, input review and API operation. Configure the account-specific fields and add your own decision and approval controls before activation.
This is a schema-checked starting point, not an end-to-end tested automation. Replace every CONFIGURE_ value, choose the operations you intend, connect credentials and map source outputs into later inputs. An edge orders steps; it does not supply a condition, an approval gate or a field mapping. Add and test those controls explicitly before any write. Cloud APIs and model providers may receive data. Keep the workflow inactive until tested with fixtures.
{
"id": "7014a03f-e24e-449f-a52b-dfa0f9f7d962",
"name": "Obsidian — read, decide, act",
"nodes": [
{
"id": "4a94ccd1-e99e-4c88-aac0-f8ed7b461ab4",
"text": "Run on a schedule",
"x": 512,
"y": 144,
"isEditing": false,
"type": "trigger-timer",
"icon": "clock",
"category": "trigger",
"isSelected": false,
"parameters": {
"fireOnStart": "No",
"scheduleType": "Interval",
"schedule": "Every 15 Minutes"
},
"description": "Setup template for Timer Trigger. This trigger node fires the workflow at specified intervals or at a specific time. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "afbe31fc-5b06-4deb-a8fb-f63dbc25368a",
"text": "Review source and draft",
"x": 512,
"y": 336,
"isEditing": false,
"type": "agnt-agent",
"icon": "agnt",
"category": "action",
"isSelected": false,
"parameters": {
"agentId": "CONFIGURE_AGENTID",
"message": "Read the Obsidian item and decide whether it warrants action. Explain your reasoning.\nSource input: CONFIGURE_SOURCE_INPUT. Produce a reviewable draft only; do not take external actions."
},
"description": "Setup template for Agent Chat. Chat with an AI agent from your agent library. Select an agent and send messages to interact with it within your workflow. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "15ea9221-3936-4576-a1de-4859e52a6160",
"text": "Configure destination in Obsidian",
"x": 512,
"y": 528,
"isEditing": false,
"type": "obsidian-api",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"action": "CHECK_STATUS",
"baseUrl": "CONFIGURE_BASEURL",
"contentType": "CONFIGURE_CONTENTTYPE",
"timeoutMs": 1,
"allowSelfSignedLocalhostCert": false,
"createTargetIfMissing": false,
"applyIfContentPreexists": false,
"trimTargetWhitespace": false
},
"description": "Setup template for Obsidian API. Control Obsidian through the Local REST API. Supports vault files, active file, search, periodic notes, tags, commands, and opening notes. Auth uses AGNT providerId 'obsidian'. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
}
],
"edges": [
{
"id": "68b893f4-ee46-437b-a7df-3e1d8ba740fa",
"start": {
"id": "4a94ccd1-e99e-4c88-aac0-f8ed7b461ab4",
"type": "output"
},
"end": {
"id": "afbe31fc-5b06-4deb-a8fb-f63dbc25368a",
"type": "input"
},
"startX": 800,
"startY": 168,
"endX": 512,
"endY": 360
},
{
"id": "f2481b29-cc13-4907-a301-52c283d252ce",
"start": {
"id": "afbe31fc-5b06-4deb-a8fb-f63dbc25368a",
"type": "output"
},
"end": {
"id": "15ea9221-3936-4576-a1de-4859e52a6160",
"type": "input"
},
"startX": 800,
"startY": 360,
"endX": 512,
"endY": 552
}
],
"zoomLevel": 1,
"canvasOffsetX": 0,
"canvasOffsetY": 0,
"isTinyNodeMode": false
}
Configure Obsidian API
Control Obsidian through the Local REST API. Supports vault files, active file, search, periodic notes, tags, commands, and opening notes. Auth uses AGNT providerId 'obsidian'.
- action — The Obsidian Local REST API operation to perform. Current example:
CHECK_STATUS. - baseUrl — Obsidian Local REST API base URL. Default is https://127.0.0.1:27124. Current example:
CONFIGURE_BASEURL. - contentType — Content-Type for write/patch actions. Use text/markdown for markdown patches, or application/json for table/frontmatter JSON patches. Current example:
CONFIGURE_CONTENTTYPE. - timeoutMs — HTTP timeout in milliseconds. Current example:
1. - allowSelfSignedLocalhostCert — Allow Obsidian Local REST API's self-signed HTTPS certificate for localhost/loopback URLs only. Current example:
false. - createTargetIfMissing — For PATCH_* actions: create the target if it does not already exist. Current example:
false. - applyIfContentPreexists — For PATCH_* actions: apply patch even if patch data already exists in the target. Current example:
false. - trimTargetWhitespace — For PATCH_* actions: trim target whitespace before applying the operation. Current example:
false.
Install Research Analyst — it runs on Obsidian
Research Analyst is a working agent that uses Obsidian. Installing it drops the whole workflow onto your canvas — connected, editable, and yours to change.
Runs on your own machine · See what it does
A local vault meets a local runtime
Obsidian keeps plain markdown files on your own disk, which makes it an unusually natural partner for a local-first agent runtime. Nothing has to leave the machine for an agent to read your notes, write into them or link them together.
A second brain something else helps maintain
The promise of a personal knowledge base always founders on upkeep. Daily notes assembled from real activity and research findings filed into the right place turn maintenance into something that happens whether or not you feel like it.
Obsidian node reference
Control Obsidian through the Local REST API. Supports vault files, active file, search, periodic notes, tags, commands, and opening notes. Auth uses AGNT providerId 'obsidian'.
What it can do: CHECK_STATUS LIST_FILES READ_NOTE CREATE_OR_REPLACE_NOTE APPEND_TO_NOTE PATCH_NOTE DELETE_NOTE OPEN_NOTE GET_ACTIVE_FILE REPLACE_ACTIVE_FILE APPEND_ACTIVE_FILE PATCH_ACTIVE_FILE DELETE_ACTIVE_FILE SEARCH_SIMPLE SEARCH_DQL SEARCH_JSONLOGIC GET_PERIODIC_NOTE CREATE_OR_REPLACE_PERIODIC_NOTE APPEND_PERIODIC_NOTE PATCH_PERIODIC_NOTE DELETE_PERIODIC_NOTE LIST_TAGS LIST_COMMANDS EXECUTE_COMMAND GET_OPENAPI_SPEC GET_CERTIFICATE
Full Obsidian API parameter reference
| Parameter | Type | What it does |
|---|---|---|
actionrequired |
string | The Obsidian Local REST API operation to perform. CHECK_STATUS · LIST_FILES · READ_NOTE · CREATE_OR_REPLACE_NOTE · APPEND_TO_NOTE · PATCH_NOTE · DELETE_NOTE · OPEN_NOTE |
baseUrlrequired |
string | Obsidian Local REST API base URL. Default is https://127.0.0.1:27124. |
path |
string | Vault-relative path, e.g. Projects/AGNT.md. For LIST_FILES, leave blank for root or provide a folder path. only when action is LIST_FILES or READ_NOTE or CREATE_OR_REPLACE_NOTE or APPEND_TO_NOTE |
content |
string | Markdown/text content to write, append, patch, or search payload for relevant actions. only when action is CREATE_OR_REPLACE_NOTE or APPEND_TO_NOTE or PATCH_NOTE or REPLACE_ACTIVE_FILE |
query |
string | Search query. For SEARCH_SIMPLE, plain text. For SEARCH_DQL, Dataview DQL. For SEARCH_JSONLOGIC, valid JSONLogic JSON. only when action is SEARCH_SIMPLE or SEARCH_DQL or SEARCH_JSONLOGIC |
operation |
string | Patch operation for PATCH_* actions. append · prepend · replace only when action is PATCH_NOTE or PATCH_ACTIVE_FILE or PATCH_PERIODIC_NOTE |
targetType |
string | Optional surgical target type for READ_NOTE and PATCH_* actions. Use heading, block, or frontmatter. · heading · block · frontmatter only when action is READ_NOTE or PATCH_NOTE or PATCH_ACTIVE_FILE or PATCH_PERIODIC_NOTE |
target |
string | Target heading name, block reference, or frontmatter field when targetType is set. only when action is READ_NOTE or PATCH_NOTE or PATCH_ACTIVE_FILE or PATCH_PERIODIC_NOTE |
period |
string | Periodic note type. daily · weekly · monthly · quarterly · yearly only when action is GET_PERIODIC_NOTE or CREATE_OR_REPLACE_PERIODIC_NOTE or APPEND_PERIODIC_NOTE or PATCH_PERIODIC_NOTE |
year |
string | Optional year for dated periodic note endpoint. Provide year, month, and day together. only when action is GET_PERIODIC_NOTE or CREATE_OR_REPLACE_PERIODIC_NOTE or APPEND_PERIODIC_NOTE or PATCH_PERIODIC_NOTE |
month |
string | Optional month for dated periodic note endpoint. Provide year, month, and day together. only when action is GET_PERIODIC_NOTE or CREATE_OR_REPLACE_PERIODIC_NOTE or APPEND_PERIODIC_NOTE or PATCH_PERIODIC_NOTE |
day |
string | Optional day for dated periodic note endpoint. Provide year, month, and day together. only when action is GET_PERIODIC_NOTE or CREATE_OR_REPLACE_PERIODIC_NOTE or APPEND_PERIODIC_NOTE or PATCH_PERIODIC_NOTE |
7 further parameters are available on the node itself.
Every parameter above is read from the shipped obsidian-api node, so it cannot drift from the product.
Connect Obsidian in two minutes
- Download AGNT Community Core — free, local-first, no account needed to run.
- Connects to your local instance directly — no cloud account required, nothing leaves your machine.
- Drop the Obsidian node into a workflow or hand it to an agent — the first run produces a receipt you can read line by line.
Obsidian + AGNT — common questions
Does anything leave my machine?
Not for the vault itself. With a local model, the whole loop stays on your hardware.
Can agents create and link notes?
Yes — creating, updating and linking related notes as it goes.
How is Obsidian connected?
Directly to your local vault; there is no cloud account involved.