PKSPKMS

(Tags: Backend, Personal_Knowledge_Management, PKSPKMS, Programming_Language/Java)
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:

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

PKSPKMS how do.excalidraw.svg

Other Personal Knowledge Management Software

Lists

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 .Obsidian directory?)
  • 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 url property instead of the file in the link when link resolving. Would need multiple file exports though.

Tagged

fileName tags digitalGarden
PKSPKMS.md Backend, Personal_Knowledge_Management, PKSPKMS, Programming_Language/Java Bud
PKSPKMS Bookmarks Firefox Extension.md Firefox, Personal_Knowledge_Management, PKSPKMS, Programming_Language/JavaScript, Web_Browser/Extension Seed
My Personal Website.md Blog, Digital_Garden, Neocities, PKSPKMS, Programming_Language/Haskell, Small_Web Seed

Tags: Backend, Personal_Knowledge_Management, PKSPKMS, Programming_Language/Java