Abele

by dudaanton
5
4
3
2
1
Score: 60/100

Description

The Ābele plugin turns most personal workflow items into linked notes and uses a groups graph instead of folders to connect them. It brings logs, task tracking, journals, calendars, finance records, time tracking, image galleries, charts and templates into one system, with each item able to surface in related notes and timelines. Tasks, transactions and time entries are stored as notes with properties, so they can carry long descriptions, attachments and rollups through related groups. The plugin also adds configurable AI agents with scoped file access, delegation, web and vault tools, plus JavaScript scripts that run from the command palette, note headers, deep links or agents. It has been tested on desktop and iOS with a vault of more than 16k notes.

Reviews

No reviews yet.

Stats

7
stars
868
downloads
0
forks
53
days
0
days
0
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
4,606
commits

Latest Version

16 hours ago

Changelog

  • 976a918b chore: bump version to 2.9.2
  • 94266631 chore: raise combined build budget to 10852456/505014 bytes: 2.9.2: changelog tests independent of load, deleting or moving a connection's root folder stops sync
  • c8d47a55 test(sync): give the source-tree conformance walks a stated timeout so a busy machine cannot fail them
  • af17f175 test(sync): register the Excalidraw migrator and adapter as non-sync filesystem users
  • ce1c0abe fix(sync): stop a connection when its root folder is deleted, moved or renamed, resume only on explicit Follow, and recover server renames without moving local files
  • 98e0a7ca test(release): the changelog boundary tests do the git work once and allow real git processes their time
  • 9af9f643 chore: raise combined build budget to 10802371/505014 bytes: 2.9.2: Excalidraw drawings migrate to canvases
  • ff08fbd5 docs(canvas): describe the Excalidraw migration commands in the agent reference
  • defc51d0 test(canvas): the drawing migration e2e closes the canvases it opened and restores both layouts
  • 9be0a0c1 test(canvas): the Excalidraw migration e2e probes return JSON
  • f9192478 feat(canvas): migrating an Excalidraw drawing rewrites its links and embeds across the vault to the new canvas
  • 9c597653 fix(canvas): a failed Excalidraw migration removes only the pictures it created
  • 5d6a0d51 feat(canvas): migrate Excalidraw drawings through tools and vault commands
  • a5cb69cd feat(canvas): expose Excalidraw migration through tools and vault commands
  • c59d5f0b fix(canvas): an Excalidraw picture id never shapes a folder, a compressed drawing is bounded, and its texts are read line by line
  • 02d152e7 feat(canvas): convert Excalidraw drawings into Abele canvases, counting what does not carry over
  • 559fe043 chore: raise combined build budget to 10772103/504832 bytes: 2.9.2: sync server 0.3.3, folders as items, Unicode-safe names, link guard, safe recovery
  • d6972a4d fix(sync): batch parent identity refreshes so a small pull stays within its bridge bound and dismiss native sheets after phone downloads
  • 92e7c9eb fix(sync): validate the folder root chain once per connection and skip redundant sibling stats
  • ffac203a fix(sync): validate the folder connection root's symlink chain without opening its parents to the scoped adapter
  • ac975376 test(sync): wait for the external embed preview button before suspending the server
  • efd859f8 feat(sync): run on abele-sync 0.3.3 with directory items, Unicode-safe inventory, symlink chain guard and restore fencing
  • 933a4203 chore: raise combined build budget to 10723720/504832 bytes: 2.9.2: agent canvas writes after reformat or rename
  • 0a7e8ccd fix(canvas): an agent's canvas write is no longer refused as stale after the file is only reformatted or another file is renamed
  • 00a11f75 chore: raise combined build budget to 10723147/504832 bytes: 2.9.2: note card panels on canvas
  • 9977ba93 fix(canvas): links inside a note card with panels keep modified clicks and hover previews
  • 726a677e test(canvas): the note panels e2e waits for the card's menu to close and says what it saw when a wait runs out
  • 23093ecc fix(canvas): a card's panel count opens its note in live preview at the panel
  • ce3fc64d fix(canvas): note card panels e2e cleans up its folder and checks the panels the card really shows
  • cdc76f1e test(canvas): the note panels e2e reaches Obsidian through the app and returns JSON
  • 38beafe1 feat(canvas): a note card on a canvas shows Abele's header and footer panels, full when zoomed in and as compact counts when zoomed out
  • b3c3d1cf feat(canvas): a note card can show Abele's header and footer, whole when large on the screen, as a row of codes when small, turned on per card or for the canvas
  • fdb980cc chore: raise combined build budget to 10716086/503543 bytes: 2.9.2: CLI reply test independent of load, node file menu test on a phone
  • 1062960b test(node): the file menu check waits for the phone sheet to settle and expects it at the bottom on a phone
  • a4f5c46f fix(node): a node file's line menu opens at the pointer, or under the tapped line on a phone
  • d0b8234f test(e2e): the CLI reply deadline test waits briefly for the killed child to disappear
  • fd232e22 chore: raise combined build budget to 10715697/503543 bytes: 2.9.2: sync on the phone
  • 83077650 fix(sync): stream large pulls in bounded chunks on iOS with one-write small pulls and crash-safe recovery
  • 3e51884c chore: raise combined build budget to 10689255/503543 bytes: 2.9.2: canvas and presentation rename, attach to chat, new-note folder
  • 5c3b405e test: the Obsidian mock's item view has onOpen and addAction like the real one
  • 9ee6b716 fix(canvas): attaching the canvas as a picture has its own icon beside attaching it to a chat
  • 57db82c5 fix(canvas): new canvases and presentations go to the new-note folder, and a presentation renames from its header and attaches to a chat
  • e5e5d532 fix(canvas): a canvas can be renamed from its header and attached to a chat like a note
  • 72f4fbf4 chore: raise combined build budget to 10686517/503543 bytes: 2.9.2: overdue hidden while dragging, indent guides in code blocks
  • 0f3140c6 test(ui): measure guide bounds from each block content box
  • 837943a6 fix(ui): toggle reading code guides through live body state
  • b8129e8b test(ui): await persisted guide settings and report off-state facts
  • 64e582ba fix(ui): preserve native code indentation when painting guides
  • 8834d669 test(ui): isolate guide settings and avoid covered caret click targets
  • b33d1bea test(ui): diagnose code guide gates and native click positions
  • e9ae6bd2 fix(ui): refresh code guides on layout and delegate rich copy per window
  • aea9dcd9 fix(ui): follow native guide visibility and preserve code copy without extra rows
  • a53b7033 fix(ui): discover native code lines and measure guide spacing
  • c0bf9d6d fix(ui): settle code guides before paint and preserve native block height
  • f732fc9f fix(ui): preserve code selection and refresh guides when blocks open
  • 4e298491 feat(ui): integrate code block indentation guides with reading and editing
  • 08a82c2a feat(ui): indent guides in code blocks, a faint line at each indent level in Obsidian's own list-guide colour, the step read from the block, kept through blank lines, none where tabs and spaces mix; a wrapped line goes on at its indent; reading mode splits each line into its own span with the highlighting and text unchanged, Live Preview lines take the same look; off with Obsidian's indentation guides
  • 2dd11c0d fix(tasks): the Overdue button hides while a task is dragged, since the past days are shown then
  • 94aae641 chore: raise combined build budget to 10674385/501774 bytes: 2.9.2: debugger back from a run, restart and reattach, values and sources
  • 3f89b12b fix(debugger): the scope tree keeps its open rows, a stack row opens its source line, and the program's last exception is shown when it ends
  • b747d0ab fix(debugger): on a phone the session opens its source before the debugger drawer, and the journey e2e waits for the new session
  • b0cb0d2c fix(debugger): back to the debugger from a run and a breakpoint row opens its source line
  • ef530d1d fix(debugger): back to the debugger from a run, restart after the program ends and reattach after a disconnect, with a live journey test
  • 164beb0d chore: raise combined build budget to 10670064/501628 bytes: 2.9.2: Paste menu in the message field on a phone, small calendars show the year
  • 5cfc8608 fix(calendar): the year calendar uses relative sizes and its hover title keeps its place
  • ab447c78 feat(calendar): the small calendars in the sidebar and a note's footer show the whole year and remember it
  • bd605ab3 test(chat): tap-area probes sample visible points inside the field's rounded corners
  • 0fcf4403 fix(chat): the whole message field is editable on a phone, so a tap anywhere in it brings the system Paste menu
  • 44c0ef1d chore: raise combined build budget to 10666359/499725 bytes: 2.9.2: presentation full screen keys
  • 2da82f90 fix(slides): arrows, Space, Page Up and Down change slides in a fullscreen presentation again and Esc leaves it
  • 588b548f chore: raise combined build budget to 10666083/499725 bytes: 2.9.2: shared folder scope
  • 478ed2e5 test(sync): keep the bounded 50 MiB scoped transfer test independent of machine load
  • c116ffe6 fix(sync): recover only each connection's own journal records and surface startup reasons
  • 82358756 fix(sync): keep each folder connection's own private staging working inside the boundary
  • a5d5f66f fix(sync): confine folder connections to their scope from startup through recovery
  • e6f4a108 fix(sync): keep scoped discovery and path checks on the exact filesystem entry
  • 9709258e fix(sync): pin folder roots and reject foreign scope paths
  • b1e231c2 chore: raise combined build budget to 10650894/499725 bytes: 2.9.2: unit tests independent of machine load, call stack names, canvas note links
  • f3c74500 test(canvas): the note card link probe returns JSON to the e2e
  • a32f8da2 test(canvas): the note card link e2e reuses the visible canvas tab and restores it
  • 4d1ce748 fix(canvas): note card hover previews use the typed popover parent
  • 465607a9 fix(canvas): links in a note card open like Obsidian's own, with a new tab on Mod or middle click, hover previews and external URLs
  • ff7c5c07 fix(debugger): the call stack shows readable function names with muted locations, raw names in a tooltip and internal frames counted
  • 3774393e test: harness, render, script and sync fixture tests no longer depend on machine speed
  • a893ec5b test: three unit tests no longer fail on a busy machine, with what they prove unchanged
  • 0c29b90c chore: raise combined build budget to 10648032/498727 bytes: 2.9.2: node path e2e, HTTP request view
  • 82eb6cae test(catalogue): the design catalogue lists the code field and shows it among the controls
  • 953082cc feat(http): a request's body is written in the plugin's code editor, its folds, brackets and comment keys shared with the code view, Mod+Enter sends; on a phone method, address and Send stay one line and each header one row
  • ad97df7c fix(http): an answer's headers stand as names beside wrapping values, empty parts of a request start folded with the add line on the heading's edge, the waiting line sits level with the first heading, and a divider sets the request's width beside its answer
  • fec1bc91 fix(node): a quote attached to a node chat stays in its draft and keeps the chat's own target
  • 73e1d7c8 test(node): the node path e2e reads node chats from their sidebar tabs
  • 289b0c47 fix(node): a paired connection reads the welcome after sign-in with the normal record limit, so a node with many capabilities still connects
  • f6ee6e86 test(tasks): the timeline edge scrolling test runs on fake timers and frames instead of wall-clock sleeps
  • 67774c61 test(e2e): importing the phone helpers creates no shot folder until a picture is written
  • 20be137b chore: raise combined build budget to 10645651/496384 bytes: 2.9.2: finance charts resize and legend, Agents list watches paired nodes
  • 73e8553b fix(node): a node paired from an invitation is watched by the Agents list at once, so its working sessions show
  • 94520867 test(node): the Agents dialog e2e records which service, rows and client the dialog really reads
  • d0eddf15 fix(node): the Agents list refreshes on session activity, so a session that starts working shows as busy
  • ea1373fc test(node): the node list e2e records the dialog, catalogue, connection and turn state when a busy session does not show
  • b145d3ff fix(node): read the daemon's node_version so a session binds its target and guards its turn before input is sent
  • 1ba051cd test(agents): the Agents list test waits for the busy session the node reports
  • 96ad518f test(agents): the quiet node session in the Agents list test gets its own worktree
  • 140235a8 fix(agents): load node sessions and derive offline status from the connection
  • 3049287e test(finance): the phone case measures the chart in a content tab after the sidebar drawers close
  • 662c982b test(finance): the chart resize e2e seeds a rendered chart before it toggles the sidebars
  • 5941e204 fix(finance): charts redraw at their real size after sidebars open or close, and a right click on a legend currency shows only it, again shows all
  • f59a76fd chore: raise combined build budget to 10638199/496384 bytes: 2.9.2: days set apart in the dates sidebar
  • a2e47fa7 style(timeline): a day after another starts at a hairline, twice as far from the day before as its rows are apart
  • dad57e1b chore: raise combined build budget to 10638199/496098 bytes: 2.9.2: map embed in Obsidian's look
  • 1b95d098 style(map): the folded source glyph is a square plate as tall as the scale, and the controls keep the same distance from the map's edge as the scale and the glyph
  • 93803290 feat(map): the map style setting shows the picked style on a still picture under its row, drawn once scrolled into view
  • f6e38747 style(map): the scale sits on a plate like the controls and the attribution starts folded everywhere
  • 65a1e068 feat(maps): a map's glyphs stand in Obsidian Canvas's control column, its pins and places speak in a popover of Obsidian's look, the scale and the source are quiet facts, and the settings pick its style from the free ones, the theme's or one's own
  • 6fd281b6 chore: raise combined build budget to 10633221/492537 bytes: 2.9.2: agent chat inset like the finance panels
  • 9d56b6c9 style(chat): the chat stands as far from the pane's edges as the money and time panels, its header, messages and field on one edge
  • 96351b6e chore: raise combined build budget to 10633221/492357 bytes: 2.9.2: breakpoint click toggles
  • efc5a848 fix(debugger): a click on a breakpoint toggles it off, also on a resolved line or during a quick double click
  • 53abf5cf chore: raise combined build budget to 10633047/492357 bytes: 2.9.2: canvas tools for agents
  • 82786af1 feat(canvas): agents can measure rendered cards, fit them to content, align and distribute, route connections with bends and labels, use documented styles and check several regions in one picture
  • f93df84c chore: raise combined build budget to 10618296/492173 bytes: 2.9.2: label filter counts
  • b5fc4d45 fix(tasks): with a label filter on, the counts beside a task list count only the tasks it shows
  • 1c00c124 chore: raise combined build budget to 10618210/492173 bytes: 2.9.2: attach selection, stylus smoothing, Access tab, canvas picker, node syntax highlighting
  • 1dd5e770 fix(node): highlight file and diff contents with Obsidian syntax colours
  • a55a8407 fix(canvas): a note picked while our own save or a reload moved the canvas on is inserted into the current canvas of the same file instead of being refused
  • 901a0afc test(settings): remove an empty placeholder test file
  • 8742d614 perf(settings): the Access tab opens without blocking: group counts yield between batches, the scope index waits until it is used, and tool groups start collapsed
  • c3252dd9 feat(ink): closely spaced stylus samples lose sensor steps and hand jitter within a quarter pixel, keeping corners, ends, pressure and sparse points exact
  • dfb8f7f2 feat(chat): Attach to a chat with a selection attaches a link to the selected lines
  • 084f1f67 chore: raise combined build budget to 10611385/492049 bytes: 2.9.2: canvas menu dismiss, chat spacing
  • ae6359c4 fix(chat): tighter spacing between a turn's tool runs, its answer and the next question
  • 8335fd5e fix(canvas): a canvas menu closes on an outside press, Esc, pan, zoom or another menu, and that press does nothing else
  • 7ba7c27e fix(canvas): a canvas menu closes on an outside click or tap, Esc, pan, zoom or another menu, and that click does nothing else
  • 4466fea6 chore: raise combined build budget to 10610760/491659 bytes: 2.9.2: node chat like the regular chat, zen mode
  • 1dd62f8a test(ui): the zen e2e closes the leaves it opened and restores the desktop and mobile layouts
  • d54e3203 test(ui): the zen e2e reaches the app's own modules instead of importing obsidian into the test
  • ea40715f feat(ui): zen mode for any view, from the command palette or the view menu, with a centred page column whose width travels and canvases edge to edge
  • cb12bf22 test(node): the offline drafts test picks Folders and worktrees from the open chat menu instead of dismissing it with a synthetic Escape
  • 0430f8cc fix(node): node chat e2e probes parse, and the node tab title uses the shared tab's width
  • 9195b3dd feat(node): a node chat opens in the sidebar and reads like the regular chat, with service records and empty thoughts left out of the transcript
  • a8ecdcf0 feat(node): a new chat offers Claude Code, Codex, pi and the node's ACP agents, those it cannot start now shown unavailable with why
  • 82ebd4a5 feat(node): every agent's chat is drawn from the node's shared session updates: words, reasoning, plan, tool calls with their diffs and state, notices, context and compaction, with the agent's own «/» commands and the change a permission question asks about
  • 1526f7b7 build(node): vendor the unreleased node client and protocol with session updates, the session command list and ACP agents
  • 0f4216ce chore: raise combined build budget to 10574030/486474 bytes: 2.9.2: external files card and embeds
  • 5bf46fb0 docs(files): describe external file palette commands
  • 2cd76e0b test(sync): close all root file cards after fixture teardown
  • fa5d0519 fix(files): preserve offline availability during sync retries
  • 76dce5ec test(sync): detach deferred external file cards during teardown
  • 05e39ab9 fix(sync): accept offloaded metadata before preparing file content
  • 37b5ef64 fix(files): complete nested embeds before native reading render
  • ab744cf0 test(sync): wait for visible embeds and draw a distinct preview
  • 59bf399a fix(files): finish owned embeds and use bundled file icons
  • f3375d90 fix(sync): preserve offload manager identity across pool resets
  • b180de7c fix(files): keep the node file icons and fake the startup registrations the external file actions use
  • 99bd9418 refactor(files): mount external file tab and embeds through mountKit
  • 5f785304 test(sync): cover external file cards and embeds live
  • add794a4 fix(files): retain newer version notice after stub refresh
  • ec3155e8 feat(files): show offloaded file cards and note embeds
  • fe667479 feat(files): expose offload metadata and cancellable transfer progress
  • 282b500a fix(files): reject conflicting parents and verify displaced recovery copies
  • d883ad60 feat(sync): add approved external file card and embed components
  • 07a21d25 fix(sync): distinguish routine retention from recovery copies
  • 87a93f8e fix(sync): record media types in external file projections
  • 1f2090bd fix(files): reserve offloaded destinations for tool writes
  • 4ba71450 fix(sync): let device pins revoke in-flight offloading
  • e8bfb3d7 feat(files): hydrate offloaded content in readers and agent tools
  • fbb0a02d fix(sync): preserve device pins across connection replacement
  • d27b890e feat(sync): add confirmed external file actions and device rules

SHA-256

f2ba87f81de52cc11cd98d0c50295add76c433d820685a8e8f08657035ef33b3  main.js
6069d7f549e05d25d52e68d0816c8209242a0827c4e52ac96ef11047c46a46e3  styles.css
20f97578874420ea416dd9d597e8c01c7356aa3a14050b9fa53d83286fd16e29  manifest.json

Verify build provenance: gh attestation verify main.js --repo dudaanton/abele-obsidian-plugin

README file from

Github

Ābele Obsidian plugin

When Obsidian uses a supported non-English language, Abele downloads its translation file from the matching GitHub release.

Ābele plugin preview

An Obsidian plugin that adds a lot of functionality I personally find missing:

  • Logs
  • Tasks
  • Journals and Calendar
  • Financial Tracker
  • Time Tracker
  • Image Galleries
  • Charts
  • Templates
  • AI Agents
  • Scripts
  • Various helper tools, etc.

I've been working on this plugin for several years. It started as a collection of helpers that were hard to adapt to workflows other than my own, and it depended heavily on the Dataview API. I rewrote it from scratch to make it more universal and as independent of other plugins as possible. My goal is to consolidate all the functionality I need into a single plugin.

Everything in it is a note. A task is a note, a transaction is a note, a time entry is a note, and notes belong to each other through the groups frontmatter property. groups is a graph rather than a folder tree: a note can belong to several groups, and a group can belong to another group. Every list and every timeline in the plugin follows those links, and so does everything an agent is allowed to see.

Most of my recent work has gone into the last two items on that list. A script is plain JavaScript that runs inside Obsidian with the whole vault in scope, so anything the plugin doesn't do, I can write once and then run from a command, a note header, a link, or an agent. Agents and scripts are the part I'd point at first now. The rest of the plugin is what they're built on.

The plugin has been tested on a vault with over 16k notes on both desktop and iOS.

Features

Logs

The first and probably the most important feature for my Obsidian workflow. Logs are individual paragraphs or whole notes that appear in full, in chronological order, inside related notes. I write most of my notes in daily notes, so I can write something like:

Met with [[John]] and [[Anna]] at [[Coffee House]], then went to the movies to watch [[Interstellar]]

and this entry appears in the timeline of every linked note — [[John]], [[Anna]], [[Coffee House]], [[Interstellar]] — so when I visit them, I know the context and when I interacted with them.

Logs cross-link through groups too. [[Interstellar]] has a groups link to [[Movies]], so Movies shows which movies I watched and when, with the context. A link in a note's text contributes only that paragraph; a link in the groups property makes the whole note a log. That's how I write meeting reports, which rarely fit in one paragraph.

Tasks

In Ābele, tasks are notes. Deadlines, completion status, creation date — all of it lives in their properties. Tasks appear in the general timeline, in related notes, in daily notes, and as a general list. A task can carry a priority, which puts it higher in the list of undated tasks, and labels of any kind, each with a colour of its own, to filter any task list by. I deliberately left out nesting, since I find it distracting. I have over 1000 tasks in Obsidian now, open and closed, and I no longer keep a personal task list anywhere else.

Tasks being notes means a task can carry a long description and everything attached to it. Automatic title setting lets titles hold links to other notes, so a task appears in every relevant context.

Journals and Calendar

Besides daily notes I keep monthly and yearly ones, plus a separate daily health journal for data exported from Apple Health, which I don't want mixed into my main journal. Journals group the notes belonging to one journal, create them from a configurable path, switch between several journals for the same date, open from a calendar click, and mark which dates have notes and open tasks.

Events from other calendars show there too, beside the tasks and read only: Google, iCloud or Outlook by their secret calendar link, or any CalDAV account such as iCloud, Fastmail or Nextcloud. Each calendar has its own colour, repeating events and time zones are handled the way the calendar wrote them, and the last copy is kept on the device so the list works offline. A click on an event makes a meeting note tied to that day (how).

Financial Tracker

I used to use Firefly III, but I missed the linking Obsidian gives you, and creating a transaction there was more work than it should have been.

Each transaction is a separate file with from, to, amount and currency in its properties. From and To are links to account notes, which are assets, income, expenses or liabilities, and their types decide whether a transaction counts as positive, negative or neutral in the balance. Multi-currency works the way Firefly does it, by giving the amount in two currencies. Transaction lists and analytics appear in the finance sidebar, in account notes, and in every note a transaction links to.

Time Tracker

The time tracker is my replacement for Toggl, and conceptually it's the finance module with time entries instead of transactions. One entry is one file, with a start, an end, and a groups property pointing at whatever is being tracked.

Entries appear in the sidebar and in every note they link to, then in their groups, and so on up the tree — so if you track time against tasks under a project, the project note shows the total. For reports I use Obsidian's own Bases, which exports a CSV of all tasks and projects.

Image Galleries

Working with images was a long-standing pain point in my Obsidian workflow. This module handles adding, arranging, moving and editing images inside a note.

Charts

Charts turn numeric note properties into trends and comparisons. This Obsidian Bases view can plot financial records, time entries or other measurements, using the same notes as the rest of the plugin.

Templates

I used to use Templater, which is powerful, but I didn't find it convenient, and I wanted something lighter and wired into the rest of the plugin rather than sitting beside it. So I wrote my own. Over time templates ended up used by every other module, and became one of the foundations of the plugin.

AI Agents

AI agents work with explicitly chosen parts of a vault rather than treating every note as available. Access can follow relationships between notes as well as folders, so a flat collection can still have precise boundaries.

So access is a scope built from files, folders, patterns and, most usefully, groups. Grant an agent the "My Project" group and it gets every note linking to that project through groups, everything under those, and so on down the graph. If a path falls outside the scope, the tools refuse it.

An agent is a named configuration: a model and a fallback, a system prompt composed from text blocks and vault notes, which tools it may use and whether each one asks first, its scope, and how far it may delegate. A chat picks an agent, and can override the model, permissions or scope for itself without touching the agent. Utility agents stay out of the chat picker, to be called by scripts, delegation or message interceptors instead.

An agent with delegation depth above zero can hand a self-contained task to another agent, or fan the same task out over a list of items with one sub-agent per item. Every delegated run keeps its full transcript, readable inline in the chat or in its own tab.

To work with a vault, agents have file operations, search, the plugin's own relation tools (the logs, backlinks, tasks and transactions of a note), web search and fetch, image reading and generation, voice input, the ability to run any script, and the tools of any MCP server reachable over HTTP (how). There is also a prompt library and support for skills. My favorites are still "defuddle", which teaches the agent to load a website straight into clean markdown, and "deepresearch", which has it dig into a topic iteratively, through web search and whatever other tools it has to hand.

Any of that can also be asked in place. Select a passage in a note, ask your question, and the chat opens on the margin beside it — anchored to that passage, scoped to that note, and able to edit the text it is about. It is an ordinary chat underneath, so when a question turns into work, open it in the sidebar and carry on there.

An agent filling out a note, beside the scripts it has run

Scripts

Skills are not deterministic. An agent follows one today and does something odd with it tomorrow, and for anything I want to happen the same way every time, that isn't good enough. So I wanted a way to build automations inside Obsidian, with agents and for agents, that runs predictably, and that the agents themselves can write for me.

A script is a JavaScript file in the vault that runs inside Obsidian with full vault access, and a comment header declaring its name, icon and parameters:

// @name Tag untagged notes
// @description Finds notes without tags and adds one
// @icon tag
// @param tag string "Tag to add" = "todo"

Parameters become a form when a person runs the script, and arguments when an agent or another script calls it. In the body you get file operations, structured search, the template engine, fetch, forms and markdown modals, dayjs, and agent() — so a script can hand the fuzzy part of a job to a model and keep the rest exact. Whatever it logs becomes its output.

There are five ways to start one: the command palette, a button in a note's header that runs it against that note, an abele:// link, an agent calling it as a tool, or an automation — a rule that runs it by itself when a task is completed, a note of some type changes, and so on, handing it the frontmatter before and after. Every run of the session is listed with its status, its log lines and what it returned, and can be stopped or run again from there.

Find and replace

A find-and-replace tool for note contents, which I built for vault migration. Moving 6000 notes to an almost completely flat structure, following @kepano's approach, meant rewriting properties based on a note's directory, merging several properties into one, replacing text only in notes carrying a given property. So it works with conditions and handles frontmatter properly, rather than treating a note as text.

Smaller things

  • Deep links (abele://) that open a note, run a command, or run a script with parameters
  • Footnote sidenotes, and colored highlights with =={color} text==
  • Fenced-code syntax highlighting in Source and Live Preview using Obsidian's Prism and theme, filling language gaps without overpainting native tokens
  • Comment chats anchored to a passage of a note, or of an agent's answer inside a chat
  • Mermaid diagrams drawn the way GitHub draws them — the width of the note, with zoom, drag, full screen and copy as source, SVG or picture (how)
  • CSS snippets loaded and hot-reloaded from a folder in the vault
  • Sync between devices through a self-hosted abele-sync server — chosen per device, with version history, deleted files and notes merged when two devices change one. There is no hosted service (how)
  • Settings transfer to another device — QR codes, a line of text, or a file — scripts, skills and prompts included
  • GitHub issues, pull requests with their diffs, discussions, comparisons and files opened from links in notes, in tabs of their own — read only, off by default (how)

Network use

Nothing leaves the device unless a feature you set up sends it:

  • AI agents talk to the model providers you add, and send them the conversation, including notes the agent read. Web search goes to Brave, with your key; fetch and downloads go wherever the agent points them; the map tools ask OpenStreetMap services (Photon, Overpass, FOSSGIS routing) and the maps load OpenFreeMap tiles; image generation goes to the image provider you add.
  • Scripts you write can make requests of their own; the Firefly III migration reads from the server you name.
  • MCP servers you connect are sent the tool calls an agent makes to them — the arguments, which may hold text from your notes — along with the token and headers you gave that server. Only servers reached over HTTP are supported; the plugin never starts a program on your computer.
  • GitHub tabs, when switched on, read from GitHub or your GitHub Enterprise server with your token.
  • Voice input sends the recording to the transcription model you chose.
  • Calendars you add are read from their secret links or CalDAV servers, with the username and password you gave, when Obsidian starts and every half hour by default; the plugin only reads them and never writes to them.

Keys, tokens, calendar links and passwords are kept in Obsidian's keychain, not in the settings file.

Roadmap

Mostly agents right now, and bug fixes. I'm using the plugin to build custom learning systems for myself, which is how I keep finding out what it's missing. There will be more Bases views, and I hope for more capable APIs once Obsidian supports them.

Development approach

The original version of the plugin, its architecture and all its core functionality — logs, journals, tasks, timeline, templates, find and replace, most of the UI and the helpers — were written entirely by hand. It isn't built that way anymore. I don't write the code now: development is fully agent-driven, and what I look at is the architecture rather than the implementation. To keep control over what the agents change, I've more or less moved to TDD. I still check that the plugin works before pushing it here, and I think all of this is worth saying plainly.

It's in very active development, so bugs are expected, and I haven't written detailed documentation yet. If you want to try it and can't get it running, open an Issue and I'll try to help.

Documentation

The documentation for people using the plugin is inside it: Open documentation in the command palette, or Documentation at the top of any settings tab. Notes for anyone working on the plugin live in docs/:

  • Design — the shared UI kit and the rules every screen follows.
  • Obsidian compliance — the guidelines the plugin is held to, and where it knowingly departs from them.
  • Testing — the three test tiers, and how to assert against a running Obsidian.
  • AI Agent — agents, delegation and the scripting API.
  • Agent reference — the docs the agent itself reads, and the rules for keeping them true.
  • Script views — the tab a script can open and fill with an interface.
  • GitHub — the links that open in tabs, and the token they need.
  • Calendars — other calendars beside the tasks, by link or CalDAV.
  • Mermaid — the diagram viewer that replaces Obsidian's own.
  • Templates and URL Protocol.

Installation

TODO

License

GPL-3.0

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
TimeStamper
5 years ago by Martin Eder
A plugin for Obsidian to quickly insert customized date- and time-stamps to the currently active note
Big Calendar
5 years ago by Boninall
Big Calendar in Obsidian, for manage your events in a day/week/month and see agenda too!
Things Link
5 years ago by @gavmn
Obsidian Dynamic Embed
5 years ago by Ivaylo Dimitrov Dabravin
Obsidian Google Tasks
4 years ago by YukiGasai
Add Google Tasks inside Obsidian
Release Timeline
4 years ago by cakechaser
Note Auto Creator
4 years ago by Simon T. Clement
An Obsidian plugin for automatically creating notes when linking to non-existing notes
Agile Task Notes
4 years ago by BoxThatBeat
This Obsidian plugin integrates your TFS data from either Jira or Azure Devops
Super Simple Time Tracker
4 years ago by Ellpeck
Multi-purpose time trackers for your notes!
Chronology
4 years ago by Gabriele Cannata
Week Planner
4 years ago by Ralf Wirdemann
Checkbox 3 states
4 years ago by Renaud Héluin @ NovaGaïa
This is a simple plugin for add a third state to checkbox list.
Workona To Obsidian
4 years ago by Holmes555
Plug-in for Obsidian.md which will import Workona json file
WakaTime
4 years ago by WakaTime
Obsidian.md plugin for automatic time tracking and metrics generated from your Obsidian usage activity.
Checklist Reset
4 years ago by Luke Hansford
Add a command to reset the state of any checklists in a document in Obsidian
Order List
4 years ago by Henry Gustafson
Task Marker
4 years ago by wenlzhang
An Obsidian plugin to change task status and append text with hotkeys and right-click context menu.
Pending notes
4 years ago by Ulises Santana
Obsidian plugin for searching links without notes in your vault.
Obsidian-compatible Watcher for ActivityWatch
4 years ago by Grimmauld
Obsidian plugin to track user activity with ActivityWatch
Tasks Calendar Wrapper
4 years ago by zhuwenq
This plugin currently provides a timeline view to display your tasks from your obsidian valut, with customizable filters and renderring options.
Brainframe
4 years ago by pedersen
Prioritize
4 years ago by EloiMusk
Obsidian Plugin, to prioritize stuff in Obsidian
Meld Build
4 years ago by meld-cp
Write and execute (sandboxed) JavaScript to render templates, query DataView and create dynamic notes.
Dynamic Timetable
3 years ago by L7Cy
Calculate the estimated completion time from the estimated task time and dynamically create a timetable.
Pivotal Tracker Integration
3 years ago by jondeates
Custom State for Task List
3 years ago by Okami Wong
A plugin for Obsidian to define your own states for task items.
Auto Template Trigger
3 years ago by Numeroflip
An obsidian.md plugin, to automatically trigger a template on new file creation
TodoTxt
3 years ago by Mark Grimes
Obsidian plugin to manage todotxt files
Due When
3 years ago by Andy Baxter
An Obsidian plugin which gives shortcuts to insert set due dates
Ruled template
3 years ago by YPetremann
An obsidian plugin that check rules to select which template to use.
Micro templates
3 years ago by epszaw
Flexible embedded micro templates powered by javascript functions
GTD No Next Step
3 years ago by Tobias Davis
Obsidian plugin for GTD workflow, badge projects with no next step.
Uncheck All
3 years ago by Shahar Har-Shuv
Obsidian plugin to uncheck all checkboxes in a file with one action
Codeblock Template
3 years ago by Super10
A template plugin that allows for the reuse of content within Code Blocks!一个可以把Code Block的内容重复利用模板插件!
Search Templates Library
3 years ago by Pentchaff
Obsidian plugin that allows to store searches templates for later use, and displays search results both in the search view and graph view.
TODO Wrangler
3 years ago by Jeel Shah
An obsidian plugin to wrangle your Todos and put them in their place.
Homework Manager
3 years ago by Kadison McLellan
An Obsidian plugin that keeps track of homework through a to-do list.
RescueTime
3 years ago by Tatsuya Hayashi
A RescueTime integration plugin to view your activity logs in Obsidian.
Timeline View
3 years ago by b.camphart
Obsidian plugin for viewing your notes linearly based on a given property
Frontmatter generator
3 years ago by Hananoshika Yomaru
A plugin for Obsidian that generates frontmatter for notes
iCal
3 years ago by Andrew Brereton
This is a plugin for Obsidian that searches your vault for tasks that contain dates, and generates a calendar in iCal format that can be imported into your preferred calendar application.
ManicTime
3 years ago by Finkit d.o.o.
YouTube Template
3 years ago by sundevista
📺 A plugin that would help you to fetch YouTube videos data into your vault.
Timeline Schedule
3 years ago by Evan Bonsignori
Inline timelines generated from human-readable time strings, e.g. 'Walk dog (30min)' in a ```schedule codeblock.
Markline
3 years ago by 闲耘
Markline: Markdown timeline view in Obsidian.
Fastimer
3 years ago by vkostyanetsky
Intermittent fasting tracker plugin for Obsidian
Templated daily notes
3 years ago by digitorum
Allow to create templayted daily note in specific folder
Task list
3 years ago by Ted Marozzi
A simple obsidian plugin enabling better task management via lists.
MemoryLane
3 years ago by BangCa
Relive and celebrate your life's milestones on a personal, interactive timeline. A nostalgic journey through your history with anniversary reminders and cherished memories.
Track-a-Lot
3 years ago by Iulian Onofrei
This is a tracker plugin for Obsidian
Ego Rock
3 years ago by Ashton Eby
An obsidian plugin that implements a basic taskwarrior UI for listing and modifying tasks.
Pomodoro Planner
3 years ago by Onur Nesvat
Things3 Today
3 years ago by wudanyang6
Grind Manager
3 years ago by dromse
Gamify your task management with rewards system, craft your tasks by tags.
Amazing Marvin Integration
3 years ago by Cloud Atlas
Interoperability between Obsidian and Amazing Marvin
Personal OS
2 years ago by A.Buot
Checkbox Sounds
2 years ago by yasd251
Adds a nice completion sound for checkboxes when ticked in Obsidian
Timekeep
2 years ago by Jacobtread
Obsidian task time tracking
Fuzzy Note Creator
2 years ago by HaloGamer33
An Obisidan plugin for quickly creating notes with the help of a fuzzy finder. Now with templates!
Focus Tracker
2 years ago by Jeet Sukumaran
Checkbox Time Tracker
2 years ago by UD
Checkbox Time Tracker for Obsidian
Templify
2 years ago by Boninall
A releases repo for custom editable template in Obsidian.
Relative Timestamps
2 years ago by Charles Young
Task List Kanban
2 years ago by Chris Kerr
doing
2 years ago by rooyca
What was I doing?
Vikunja Sync
2 years ago by Peter Heiss
Manage your tasks in vikunja.
Smart Templates
2 years ago by 🌴 Brian Petro
Smart Templates is an AI powered templates for generating structured content in Obsidian. Works with Local Models, Anthropic Claude, Gemini, OpenAI and more.
Pug Templates
2 years ago by Nicholas Wilcox
An Obsidian plugin that enables the usage of Pug templates.
Morgen Tasks
2 years ago by Morgen AG
Templater
6 years ago by SilentVoid
A template plugin for obsidian
Buttons
6 years ago by Sam Morrison
Buttons in Obsidian
Hotkeys for templates
6 years ago by Vinzent
Kanban
5 years ago by mgmeyers
Create markdown-backed Kanban boards in Obsidian.
Org Mode
5 years ago by ryanpcmcquen
Add Org Mode support to Obsidian.
Stopwatch
5 years ago by Tokuhiro Matsuno
Tasks
5 years ago by Clare Macrae and Ilyas Landikov (created by Martin Schenck)
Task management for the Obsidian knowledge base.
Liquid Templates
5 years ago by Diomede Tripicchio
Define your templates with LiquidJS tags support
Grandfather
5 years ago by Danny Hernandez
A simple Obsidian plugin to display the time and date on the status bar
Amazing Marvin
5 years ago by Shirayuki Nekomata
Simple plugin for Amazing Marvin
Timeline
5 years ago by George Butco
Obisdian.md plugin for creating timelines
Random To-Do
5 years ago by NatiAris
Pick a random todo item or a file with todo items
Toggl Track
5 years ago by Maxime Cannoodt
A Toggl integration plugin for the popular knowledge base application Obsidian.
Daily Named Folder
5 years ago by Nemo Andrea
Like daily note, but nested in a daily folder and some more improvements
Trello
5 years ago by Nathonius
An Obsidian Plugin that connects Trello cards to Obsidian notes.
Carry-Forward
5 years ago by Jacob Levernier
An Obsidian Notes plugin for generating and copying block IDs, and copying lines with a link to the copied line
Archiver
5 years ago by ivan-lednev
Archive completed tasks in your Obsidian vault (plus other org-mode-like features)
Habitica Sync
5 years ago by Leoh and Ran
This is a under-development Obsidian Plugin for Habitica
From Template
5 years ago by mo-seph
Simple plugin to create Notes from a template, and fill in fields defined there
Flow
2 years ago by Ben Phillips
Implements key processes in David Allen's Getting Things Done (GTD) methodology
Advanced Copy
2 years ago by leschuster
An Obsidian plugin to copy Markdown and transform it into HTML, Anki, or any custom format. Create custom profiles with versatile templates tailored to your workflow.
Another Simple Todoist Sync
2 years ago by eudennis
Obsidian.md plugin to integrate with Todoist app.
Markdown Timeline
2 years ago by Jiaheng Zhang
An Obsidian plugin to record the events in a Flashback timeline
Simple Todo
2 years ago by elliotxx
A minimalist text-based todo manager (Text-Based GTD) for efficient task management in Obsidian.
Chronos Timeline
2 years ago by Claire Froelich
Render interactive timelines in your Obsidian notes from simple Markdown.
Visual Crossing Weather
2 years ago by willasm
Fetch Prayer Times
2 years ago by Ecys
Fetches times from Aladhan API and inserts into a table.
Focus Time
2 years ago by AstraDev
Focus Time is a plugin that helps you track how much time you spend on each note.
Template by Note Name
2 years ago by Jacob Learned
A simple Obsidian plugin to automatically template notes based on their title
Easy Timeline
2 years ago by Romeliun
The Easy Timeline plugin for Obsidian allows you to create timelines easily.
Recent Notes
2 years ago by Kamil Rudnicki
Recent Notes Plugin for Obsidian
Goal Tracker
2 years ago by Ben Rotholtz
Kikijiki Habit Tracker
2 years ago by KIKIJIKI
Kikijiki Habit Tracker Plugin for Obsidian
Varinote
2 years ago by Giorgos Sarigiannidis
A plugin for Obsidian that allows you to add variables in Templates and set their values during the Note creation.
Asana
2 years ago by Ryan Bantz
Obsidan plugin that creates tasks in Asana for highlighted text or the current line
Content Cards
2 years ago by leo
Insert content cards in Markdown, such as timeline, highlightblock, target card, book information card, music information card, movie information card, photoes ablum, business card, content subfield, countdown, SWOT,BCG.
Chronotyper
2 years ago by BambusControl
Obsidian plugin for tracking note edit time
Generate Timeline
2 years ago by Shanshuimei
An obsidian plugin to generate timelines from tags, folders, files or metadata automatically. 根据标签,文件夹,文件或者属性自动生成时间轴的插件。
Note to RED
2 years ago by Yeban
一键将 Obsidian 笔记转换为小红书图片进行导出
ProgressTracker
a year ago by Van Nam
A plugin that helps you track progress and manage tasks in your notes.
Daily Notes Automater
a year ago by David Pedrero
Vertical Timeline List
a year ago by Jalad
Utilizes task lists to create a timeline... or something like a timeline.
Inboxer
a year ago by Eoin Hurrell
Obsidian plugin to add an inbox to notes
SolidTime Integration
a year ago by proniclabs
Obsidian SolidTime Integration Plugin
Markwhen File Sync
a year ago by rouvenjahnke
Synchronize properties from your Obsidian notes with a Markwhen timeline file.
Countdown To
a year ago by Gui Cattani
A countdown/progress Obsidian widget using progressbar.js
Timelive
a year ago by aNNiMON
Turn a list of dates into a timeline
Template Filename
a year ago by Callum Alpass
Obsidian plugin for creating notes with templatable filenames
Character Sheets
a year ago by Grayvox
📝Create character sheets for your very own traumatized little guys with Obsidian.
Simple Vault Importer
a year ago by WebInspectInc
Timeline Canvas Creator
a year ago by chris-codes1
Quickly create timeline structured canvases in Obsidian.
Send to Canvas
a year ago by wenlzhang
An Obsidian plugin that allows you to send tasks, blocks, and notes to Canvas files as plain text, links, and embeds.
Storyteller Suite
a year ago by Maws
Custom Comments
a year ago by Jack Chronicle
Adds a method to create custom methods to enclose comments
Emoji selector
a year ago by summer
Insert custom emojis with quick search, auto-suggestions, and customizable templates.
Lark Style CountDown Timer
10 months ago by Zhaoyang Yu
Tag Timer
10 months ago by quantavil
The Tag Timer is a versatile plugin for Obsidian that allows you to seamlessly track the time you spend on specific tasks or sections within your notes.
Timelog
10 months ago by Eddie Blundell
Time logging plugin for obsidian
Default Template
9 months ago by raeperd
obsidian plugin to set default template for new notes
Handlebars Dynamic Templating
8 months ago by Hide_D
Handlebars dynamic templating. Define template files and use them dynamically via hb blocks. Template recursion is also possible.
Role Switch
8 months ago by Zafrem
This program is a tool that recognizes and makes task switching easier, even though multitasking is difficult.
LongtimeDiary
7 months ago by sawamaru
This is Obsidian Plugin to show past DailyNotes on the same day in previous years.
Kanban Bases View
7 months ago by I. Welch Canavan
A kanban-style drag-and-drop custom view for Obsidian Bases that allows you to organize your notes into columns based on any property.
Simplest Todo
5 months ago by kintolayli
Yori Task
5 months ago by yorigo77
task manager, week planner, year planner
Project Manager
5 months ago by stepankropachev
Project management inside Obsidian. Table, Gantt and Kanban over plain Markdown notes, with a local API for agents and scripts.
Task Collector
5 months ago by ebullient
Manage tasks and logs within an Obsidian note.
Day Planner OG
5 months ago by ebullient
An Obsidian plugin for day planning and managing pomodoro timers from a markdown task list.
Timelines (Revamped)
5 months ago by seanlowe
Create a timeline view of all notes with the specified combination of tags
April Automatic Timelines
4 months ago by april-gras
Simple timeline generator plugin for story tellers using obsidian
TaskNotes
4 months ago by callumalpass
Task and time-tracking management with calendar integration for Obsidian
Apex Dashboard
3 months ago by PandoraReads
Stop switching between Obsidian notes. One page. Everything you need. Memo your thoughts, crush your todos, track your projects — and make it look incredible doing it.
基于第二大脑理念的Obsidian工作台,一站式管理笔记、待办、备忘录、项目和你的日常工作流
JSON-CSV Importer
3 months ago by farling42
Plug-in for Obsidian.md which will create Notes from JSON files
Gantt Calendar
3 months ago by Sugar
obsidian-gantt-calendar
Live Life Recording
3 months ago by goryugocast
Operate tasks directly in Markdown with start/finish records, routine insertion, and a lightweight daily summary for Obsidian.
StoryLine
3 months ago by Jan Sandström
StoryLine transforms your Obsidian vault into a complete book planning and writing tool. Organize scenes, build characters, manage locations, track plotlines, and monitor your progress, all inside Obsidian.
ReverySky Map
3 months ago by MoonSkorch Studio
Obsidian plugin rendering the vault graph as an interactive 3D star map with Unity WebGL
GTD Tasks
3 months ago by unpreditable
Day Planner
3 months ago by ivan-lednev
An Obsidian plugin for day planning with a clean UI and a simple task format
Yuhanbo Task
2 months ago by yuhanbo
Obsidian 智能任务管理与番茄时钟插件,集成 AI 智能拆分的任务管理系统,配备专业番茄时钟,提升工作效率。
Power Bases
2 months ago by Power Plugins
Add board, calendar, timeline, chart, gallery, and table views to Bases, with inline editing, colors, rollups, field types, formulas, and CSV import.
Prisma Calendar
2 months ago by Matej Vavro Productivity
Prisma is not just a calendar plugin. It turns any note with a date into a flexible planning system inside Obsidian. There are no rigid schemas or predefined structures — just your data, your rules, fully under your control. It lets you see your entire vault through time.
Journal View
2 months ago by RUverse
A journal view for Obsidian
BeautyTasks
2 months ago by Avni Bilgin
Todoist-style task & project manager for Obsidian — one markdown note per task, native UI, no plugin dependencies.
TODOseq
2 months ago by Stephen Cross
TODOseq ("to-do-seek") is a lightweight, keyword-based task tracker for Obsidian
Time Things
2 months ago by plasmabit
Know when your note was was last updated. Track how much time you spent writing. Keep an eye on the clock.
Note Types
2 months ago by jsmorabito
Dayframe
2 months ago by Ganessh Kumar R P
🖼️ like a picture frame but for your daily notes.
Operon
2 months ago by Hasan Yılmaz
Task management system for humans and agents in Obsidian.
Xboard
2 months ago by wrbin
一款易上手、已美化、更适合AI工作流的obsidian工作台
TaskChute Plus
2 months ago by hiroyaiizuka
Execute Taskchute for Obsidian
Granola Meetings Simple Sync
2 months ago by philfreo
"Granola Meetings Simple Sync" Plugin for Obsidian
Bi Ji Tong Bu
2 months ago by 笔记同步助手
Bi Ji Tong Bu (笔记同步助手) for Obsidian — marketplace edition (no self-update; full disclosures)
Gantt this
2 months ago by Altarok
Obsidian plugin showing multiple TTRPG calendars at once in one gantt chart.
WorkLife Calendar
2 months ago by RavenLife
Say goodbye to chaos. A smart calendar, task tracker, time tracking, habit tracking, and finance management — all in one beautiful, connected space.
Xove Dashboard
2 months ago by ty
Obsidian 个人工作台插件:把任务管理 / 项目管理 / 灵感收集 / 笔记统计 收进一个首页,数据全留在本地的。
Wiki Companion
2 months ago by Mo A
A minimalist, read-only calendar for Obsidian, built on the frontmatter you already have.
Rollover Plus
a month ago by Wren
Move unfinished tasks between daily notes with Rollover Plus.
Simple Reminder
a month ago by Dmitry
Напоминалка
BrainCore LifeOS
a month ago by 囍樂
BrainCore 侧边栏不仅是一个展示面板,更是你整个 Obsidian 知识库的“核心呼吸机”。它由 6 大模块组成,涵盖了时间感知、极速收集、工作流转、习惯养成与知识内化。一切信息从这里输入,最终也会在这里沉淀。
Objects
a month ago by Finn
AXXA Agent
17 days ago by AXXA Lab™
AI chat, Vault Q&A and an agent that edits your notes, built mobile-first. OpenAI, Claude, Gemini, OpenRouter, NVIDIA NIM or local Ollama, with your own API key. Obsidian plugin.
Bases Timeline View
15 days ago by xjiaxiang
timeline view for obsidian bases