Page Details
access: Public status: Active published: 2025-07-21 tag_page: PKSPKMS creationDate: 2025-01-19 modifiedDate: 2025-09-22 type: Project Tag_Page digitalGarden: Bud
[!info] I’ve not yet released it, out of shame. Will do in future.
Paul Kenny’S Personal Knowledge Management System
A HTTP API server and command line tool written in Java that can get data about Markdown files and their links to each other (and other files) in a directory (PKMS).
Uses YAML frontmatter in Markdown files as metadata and links in text content, including Wikilinks.
Made to complement Obsidian.
My uses:
- API for PKSPKMS Bookmarks Firefox Extension
- Export files outside of the PKMS, like to My Personal Website
Server
# Start server
pkspkms server -port "3000" -directory "/path/to/notes/"
# In another terminal
curl GET "http://localhost:3000/list/files?tags=Public" | jq .Command-line
# Export JSON graph
pkspkms export -directory "" -query "" -output "" -type "graph" -sqlite-db "" -options "wikilinks,backlinks" -depth "2"
# Export Markdown files
pkspkms export -directory "" -query "" -output "" -type "markdown" -sqlite-db "" -options "wikilinks,backlinks,base" -includeLinked "jpg,png"Note: -depth retrieves files from outside the query. ==This can leak your information if you’re not careful==.
Features
- Export files
- Export file links graph as JSON
- Bad query language for filtering
- Kinda works a tiny bit with Obsidian Base
- Wikilinks work
- Backlinks
- REST-like API
Known Issues
- ==Lots==
- Doesn’t support single line, comma separated tags
(WIP) How It Works Internally, Kinda
Other Personal Knowledge Management Software
- mdzk - an API for your Markdown vault, see docs. Very similar to what I’m doing here. Hasn’t seen very much development in the last two years (07-2025).
- SiYuan, HN discussion
- Obsidian
- Logseq
- TheBrain: The Ultimate Digital Memory - has an interesting way to explore your graph connections
- Heptabase - pretty slick looking and I like how annotating looks but it’s not file/local first
- TriliumNext Notes
- nb · command line and local web plain text note-taking, bookmarking, archiving, and knowledge base application, Github
Lists
- MaggieAppleton/digital-gardeners - I also like Maggie’s other works, I’m subscribed to her blog RSS.
- lyz-code/best-of-digital-gardens: Ranked list of awesome digital gardens / second brains
- KasperZutterman/Second-Brain: list of awesome Public Zettelkastens/Second Brains/Digital Gardens
Tasks
Tasks
TODO
- Get SQlite DB up and running so it’s not hammering your hard drive and taking ages ➕ 2025-06-20
- Refactor âž• 2025-07-12
Potential Features
- what about a coordinating server for multiple pkms sources? âž• 2025-09-22
GOTO - The Brightest Minds in Tech: Beyond the Cloud: The Local-First Software Revolution • Brooklyn Zelenka & Julian Wood
Starting from: 00:13:02
Episode webpage: https://gotopia.tech/articles/374/beyond-the-cloud-the-local-first-software-revolution
Media file: https://www.buzzsprout.com/1714721/episodes/17670928-beyond-the-cloud-the-local-first-software-revolution-brooklyn-zelenka-julian-wood.mp3#t=782
- Add Swagger docs âž• 2025-08-08
- Add a validation JSON schema endpoint for Markdown YAML âž• 2025-09-13
- Watch for file changes and update DB
- Virtual files?
-
More, better settings
- Exclusion list directories
- Inclusion list directories
- Exporting file: have argument to use db file from previous run
-
Use Obsidian settings (point to
.Obsidiandirectory?) -
It’d be cool if when you’re exporting a file and a link in that file is for a file that isn’t also getting exported it uses that file’s
urlproperty instead of the file in the link when link resolving. Would need multiple file exports though.
Tagged
Tags: Backend, Personal_Knowledge_Management, PKSPKMS, Programming_Language/Java