CocaPls548 downloadsUse hierarchical tags as the source of truth for structured filenames, with safe bulk updates and link-aware renames.
English | 한국어
Trellis uses hierarchical managed tags to keep filename parts consistent across many notes. Tags remain the source of truth, and renames go through Obsidian so internal links can update with the file.
tag #projects/PRJ/01/DOC/01
file PRJ01DOC01-meeting-notes.md
tag #projects/PRJ/01/DOC/02
file PRJ01DOC02-meeting-notes.md
Trellis does not require every note to use managed tags. Notes outside the registered namespaces keep their existing tags and filenames.
A filename prefix can make a large vault easier to scan, but maintaining the same structure by hand across many notes is slow and error-prone. Trellis lets you describe that structure once and project it from frontmatter tags.
frontmatter tags → filename structure → Obsidian rename → internal links updated
This keeps the structured part of a filename consistent while leaving an optional human-readable title under direct user control.
#projects/... or #areas/....Managed tag registration and filename projection are separate. A managed tag can appear in the Trellis sidebar without appearing in a filename, and each definition can be shown, hidden, or archived independently.
The default structure is one tag slot followed by one general slot:
[projects tag] - [general title]
PRJ01DOC01-meeting-notes
You can also combine several optional tag slots:
#projects/PRJ/01 + #areas/ENG/02
→ PRJ01-project-overview-ENG02
Each note only needs the managed tags that apply to it. Empty slots and their unused boundaries collapse automatically.
Per tag slot, you can configure:
The underscore option changes only the projected filename text:
stored tag #topics/design_system
filename text design system
Per boundary, you can choose:
Trellis rejects structures that cannot be parsed safely, would create duplicate filenames, or use characters that are unsafe across supported platforms.
Trellis treats filename and tag changes as managed write operations.
Renames use Obsidian's file manager and follow Obsidian's Automatically update internal links setting.
projects.projects/PRJ/01/DOC/01 to a note.Example frontmatter:
---
tags:
- projects/PRJ/01/DOC/01
---
Frontmatter tags are the management source. Inline tags are not rewritten and are reported separately when they overlap a managed namespace.
Trellis exposes a guarded in-process surface for tools that already run inside Obsidian:
describe / inspectNote → planChange → applyChange → awaitIdle
Plans are rejected if the note, tags, filename structure, or target path changed after inspection. Callers can query operation status and must treat an attention report as unfinished review even when Trellis is otherwise idle.
Trellis opens no network, REST, URI, or MCP endpoint. See Guarded automation for the request and result contracts.
tags; other properties are not filename sources.These boundaries keep Trellis useful in different vaults without imposing one knowledge-management system.
In Obsidian, open Settings → Community plugins → Browse, search for Trellis, then install and enable it.
Download main.js, manifest.json, and styles.css from a matching
GitHub release, then place
them in:
your-vault/.obsidian/plugins/trellis/
Enable Trellis from Obsidian's Community plugins settings.
Filename and tag migrations can affect many notes. Review the preview and keep a normal vault backup before large changes.
npm ci
npm run lint
npm run build
npm test
Pure filename-structure logic lives in src/tagkey.ts. Persisted settings and
operation tracking live in src/settings-model.ts and
src/operation-state.ts. Obsidian integration lives in src/main.ts.
See CONTRIBUTING.md for the development and release workflow.