jonathan-harris71 downloadsA tutor that plans goals from first principles, calibrates what you know with quizzes, and keeps that memory in this vault. Optionally publishes your concept map to your Groundwork profile.
Groundwork is a tutor inside Obsidian. It maps the concepts you're learning, marks how well you know each one, and plans the next step toward a goal.
Install it from Obsidian's community plugins. Sign in at groundworklearn.com. A free plan is included. Paid plans are optional.
You need Obsidian on a desktop computer.
Groundwork does not run on a phone. You can sign up on your phone and install on your computer later.
A free plan is included. Paid plans ($6 and $20 per month) unlock a model you already pay for, or models Groundwork runs.
The study tools are the same on each plan. Paid plans are billed on the Groundwork website through Stripe. You can change or cancel a paid plan from Manage billing on your account page.
Progress stays on your account and syncs across computers. Your vault stays on your computer. The tutor reads only the vault folders you allow in settings.
A free plan is included. Paid plans ($6 and $20 per month) unlock Bring your own model, or Groundwork running the models. Paid plans are billed on the Groundwork website through Stripe.
An account is required before the tutor will run. Sign in with Google on that website. Tutor memory — concept notes, goals, quiz evidence, chats, and the learner profile — is stored on the account.
The plugin uses the network for these services:
https://groundwork-6f9ca.web.app in production builds) stores the account, tutor memory, plan routing, and grades written answers. Sign-in happens in the browser on the Groundwork website. Open Obsidian connects this device through Obsidian; if the plugin is not installed yet, the site opens the community plugin page.https://securetoken.googleapis.com) refreshes the website sign-in into an ID token the plugin sends to Groundwork.https://fonts.googleapis.com) loads Jost for the Groundwork panel stylesheet.The plugin does not send telemetry. On the desktop it uses the filesystem (node:fs) to see whether the Claude Code executable is installed, and it starts that program with child_process (through the bundled Agent SDK) so the tutor can run under your Claude subscription. Claude Code's working directory is the vault. The plugin reads PATH (and, on Windows, APPDATA) only to find that executable when Obsidian was not launched from a shell. It does not read the hostname, username, or network interfaces. Device labels default to Obsidian until you set one in the panel.
The separate groundwork CLI (not the plugin) reads and writes ~/.config/groundwork/config.json and can run git to sync the vault. It does not read other files outside the vault. The only notes the tutor opens as extra context are in vault folders you pick in settings. Python figures that need a local runtime stay in the Obsidian window; the plugin does not download a Python package with a dynamic import().
The plugin is desktop-only.
The section above — payment, a required account, network services, and files outside the vault — is what the Obsidian community plugin directory asks this README to state. Groundwork is MIT licensed.
The plugin is laid out so it can be submitted:
| Requirement | Where |
|---|---|
manifest.json with id, name, version, minAppVersion, description, author, authorUrl, isDesktopOnly |
repository root, identical to packages/obsidian-plugin/manifest.json. The community directory reads the root file. |
versions.json at the repo root, mapping each version to its minAppVersion |
versions.json |
| An open-source license | LICENSE |
Release assets main.js, manifest.json, styles.css |
a tag equal to the manifest version (0.2.0, no v prefix) runs .github/workflows/release-plugin.yml |
node scripts/check-community-plugin.mjs checks that list. The plugin id is groundwork, which is also the community install folder.
From the website, Open Obsidian opens Obsidian and connects this device. Manual install: community plugin page.
The plugin is desktop-only because it bundles Node-based tooling (Claude Code / Agent SDK) and does not run on mobile Obsidian. Publishing the map is off until you sign in and turn it on. That request goes to the Groundwork account API (https://groundwork-6f9ca.web.app in production builds).
The Groundwork panel uses the website's dark look: Jost, and the red, amber, blue, and green status dots. Learn, Concept map, and Goals are three views of the same memory. A goal has a due date and a weight for each concept. The concept map is Groundwork's own map of that goal, not Obsidian's graph view. The rest of Obsidian keeps its theme.
The manifest, release checklist, and node scripts/check-community-plugin.mjs are described in docs/development.md.
Clone, setup, the CLI, and how the repo is laid out: docs/development.md.