by Andrew Rosenquist
Build reusable chains of AI operations on your notes. Process, write, and rewrite Markdown files using a local Ollama model, then save your workflows as presets and run them in one click.
Busy Goblins
Build reusable chains of AI operations on your Obsidian notes. Process, write, and rewrite Markdown files using a local Ollama model, then save your workflows as presets and run them in one click.
What it does
Busy Goblins lets you wire together a sequence of AI steps — called a chain — where each step reads from a file or folder, runs it through a local language model with a prompt you provide, and writes the result somewhere. The output of one step can feed directly into the next.
A chain you build once can be saved as a preset and reused forever.
Prerequisites
- Ollama installed and running locally (
ollama serve) - At least one model pulled, e.g.
ollama pull qwen2.5:32b - Obsidian desktop (plugin requires desktop — it uses Ollama's local API)
Installation
From the community store
- Open Obsidian → Settings → Community plugins → Browse
- Search for Busy Goblins
- Install and enable
Manual install
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Copy them into
.obsidian/plugins/busy-goblins/inside your vault - Reload Obsidian and enable the plugin in Settings → Community plugins
Setup
- Open Settings → Busy Goblins
- Set your Ollama URL (default
http://localhost:11434is correct for most installs) - Set your Default model to whichever model you have pulled (e.g.
qwen2.5:32b) - Optionally set a Presets folder where saved chains will be stored (default:
_AI/BusyGoblins/Presets)
How to use
Open the panel
Click the chain icon in the ribbon, or run Open panel from the command palette.
Build a chain
Each chain is made of one or more blocks. Click + Add Block to add blocks and configure each one:
Operation — what the block does:
- Process — reads a source file or folder, sends it to the AI with your prompt, writes the response to a new destination. The source is never modified.
- Write — sends a prompt to the AI with no source file. Pure generation.
- Rewrite — reads a source file or folder, sends it to the AI with your prompt, and overwrites the source with the response. Destructive — use dry-run first.
Source — where the block reads from:
- File — a single Markdown file
- Folder — all Markdown files in a folder (combined into one context for Process/Write; processed individually for Rewrite)
- Previous — the output from the block above (available on Block 2 and later)
Prompt file — a Markdown file in your vault containing the instructions for the AI. Optionally add a model: key in the frontmatter to override the default model for that block:
---
model: llama3:70b
---
Summarise the following notes into bullet points...
Destination — where the output goes (Process and Write only):
- File — write to a specific file
- Folder — write into a folder with a base filename you provide. Adds a counter suffix if the file already exists (unless Allow overwrite is on)
- None — hold the output in memory only, passing it to the next block via Previous
Run a chain
Click Run. Blocks execute top to bottom. The Run button is disabled with a tooltip explaining any missing configuration.
Click Dry Run first to preview exactly what the chain will read, which model it will call, and what it will write — without making any changes.
Save and load presets
Click Save Preset to name and save the current chain as a .json file in your presets folder. Click Load Preset to browse and restore a saved chain.
Settings reference
| Setting | Description |
|---|---|
| Ollama URL | Address where Ollama is running. Default: http://localhost:11434 |
| Default model | Fallback model when a prompt file has no model: frontmatter |
| Presets folder | Vault path where preset .json files are stored |
| Prompts folder | Restrict the prompt file picker to a specific folder. Leave blank to search the whole vault |
| Protected paths | Vault paths Busy Goblins will never overwrite. Rewrite blocks targeting these paths are blocked. Process/Write blocks with Allow overwrite enabled are also blocked |
| Show token cost estimate | After each run, show estimated token usage and approximate cloud API cost for comparison |
Acknowledgements
Busy Goblins evolved from an earlier plugin by the same author called The Director, which handled single-agent folder runs. Busy Goblins is a ground-up rebuild with chaining, presets, and a broader set of operations.
The FolderSuggest component is adapted from Synod by slaymish, used under MIT licence.
Support
If you find Busy Goblins useful, you can buy me a coffee.
Licence
MIT — see LICENSE
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.