Knowledge · Integration
ObsidianAGNT

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.

Install Research Analyst → Get AGNT free

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 doesLets an AGNT agent read from and act in Obsidian.
Connects withA local endpoint on your own machine
AGNT nodeobsidian-api
Runs whenA note is created or changed
Typical build timeTwo minutes
Where data goesNowhere 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

Most Obsidian builds begin the same way. A run starts when a note is created or changed. The agent reads what arrived, judges it against criteria you wrote in plain language, and acts only where that judgment says it should — typically to create and update notes. That is what makes research findings filed into your vault something you can hand over rather than merely schedule.

What follows is the whole workflow, not a sketch of it. Obsidian supplies the event, the agent supplies the reasoning, and the third node does the thing — or deliberately does nothing, which is a recorded outcome rather than a silent one.

Obsidian workflow: run on a schedule → read it and decide → act in obsidian TRIGGER trigger-timer Run on a schedule Every fifteen minutes. ACTION agnt-agent Read it and decide Judged against your own rules. ACTION obsidian-api Act in Obsidian Runs CHECK_STATUS.
The whole flow runs locally against your own Obsidian account. Deciding to take no action counts as an outcome and is recorded like any other.
Obsidian — read, decide, actpaste into a new workflow
{
  "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": {
        "interval": "15",
        "unit": "minutes"
      },
      "description": "Checks Obsidian every fifteen minutes.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    },
    {
      "id": "afbe31fc-5b06-4deb-a8fb-f63dbc25368a",
      "text": "Read it and decide",
      "x": 512,
      "y": 336,
      "isEditing": false,
      "type": "agnt-agent",
      "icon": "agnt",
      "category": "action",
      "isSelected": false,
      "parameters": {
        "instructions": "Read the Obsidian item and decide whether it warrants action. Explain your reasoning."
      },
      "description": "Judges the Obsidian item against criteria you wrote in plain language.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    },
    {
      "id": "15ea9221-3936-4576-a1de-4859e52a6160",
      "text": "Act in Obsidian",
      "x": 512,
      "y": 528,
      "isEditing": false,
      "type": "obsidian-api",
      "icon": "connect",
      "category": "action",
      "isSelected": false,
      "parameters": {
        "action": "CHECK_STATUS"
      },
      "description": "Runs CHECK_STATUS on your behalf.",
      "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
}

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
ParameterTypeWhat 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

  1. Download AGNT Community Core — free, local-first, no account needed to run.
  2. Connects to your local instance directly — no cloud account required, nothing leaves your machine.
  3. 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.

More knowledge integrations

Give AI a job. Get the proof.