README file from
GithubVault OKR Manager
Plan, track, and review Objectives and Key Results directly inside your Obsidian vault with a dedicated dashboard, embedded progress history, and local-first Markdown storage.
中文文档 · Features · Installation · Quick Start · Usage · FAQ
Screenshot TODO: add one dashboard screenshot and one short GIF showing drag-and-drop reordering.
Overview
Vault OKR Manager is an Obsidian community plugin for managing OKRs entirely inside your vault.
The plugin keeps each objective in a single Markdown file and stores:
- objective metadata in YAML frontmatter
- embedded key results in the same file
- embedded check-in history inside each key result
This storage model keeps your vault cleaner than one-file-per-KR or one-file-per-check-in approaches while still remaining readable, portable, and version-control friendly.
The plugin is local-first by design:
- no external database
- no cloud dependency
- no telemetry
- no data leaves your vault
Features
- One file per objective with embedded key results and progress history
- Dashboard view for browsing objectives by period
- Weekly, monthly, quarterly, and yearly planning cycles
- Automatic progress calculation for key results and objectives
- Built-in progress recording workflow with multiple updates per day
- Drag-and-drop key result ordering in the dashboard
- Overdue objective indicators, reminders, and due date postponement
- English by default, with Simplified Chinese support
- Works with Obsidian sync and Git-based workflows because data stays in Markdown
Requirements
| Item | Requirement |
|---|---|
| Obsidian | 1.4.4 or later |
| Platform | Windows, macOS, Linux, iOS, Android |
| Plugin ID | vault-okr-manager |
| Desktop only | false |
Installation
Community plugins directory
If the plugin is available in the official Obsidian community plugins directory:
- Open Obsidian.
- Go to Settings → Community plugins.
- Disable safe mode if needed.
- Select Browse.
- Search for
Vault OKR Manager. - Install the plugin.
- Enable the plugin.
Manual installation
- Open the latest release page: Releases
- Download these release assets:
main.jsmanifest.jsonstyles.css
- Open your vault folder.
- Go to
.obsidian/plugins/. - Create a folder named
vault-okr-manager. - Copy the three files into that folder.
- Restart Obsidian or reload community plugins.
- Enable Vault OKR Manager in Settings → Community plugins.
YourVault/
└── .obsidian/
└── plugins/
└── vault-okr-manager/
├── main.js
├── manifest.json
└── styles.css
Quick Start
1. Review the settings
Open Settings → Vault OKR Manager and review the defaults:
| Setting | Default | Description |
|---|---|---|
Objective directory |
OKR |
Root folder for all objective files |
Default period type |
quarter |
Default period type for new objectives |
Auto-calculate progress |
true |
Recalculate progress automatically from current and target values |
Open dashboard on startup |
false |
Automatically open the dashboard when Obsidian starts |
2. Create your first objective
- Open the command palette with
Ctrl+PorCmd+P. - Run New objective.
- Choose a period type:
- Week
- Month
- Quarter
- Year
- Enter a period value:
- Week:
2026-W20 - Month:
2026-05 - Quarter:
2026-Q2 - Year:
2026
- Week:
- Enter a title, owner, description, and due date.
- Select Create.
The plugin creates a file such as OKR/2026-Q2/O1.md.
3. Add key results
- Run New key result.
- Select the period and the objective.
- Enter the key result title, owner, unit, current value, target value, confidence, and due date if needed.
- Select Create.
No separate key result file is created. The new key result is stored inside the objective file.
4. Record progress
- Run Record progress.
- Select a key result.
- Enter the latest current value or adjust the progress directly.
- Optionally add notes and blockers.
- Save the update.
Progress history is stored inside the related key result, so multiple updates on the same day are supported without creating extra files.
5. Open the dashboard
- Run Open dashboard.
- Review objectives, key results, progress, overdue status, and due dates in the sidebar.
- Drag key results to reorder them when needed.
Usage
Storage model
The default structure looks like this:
OKR/
└── 2026-Q2/
├── O1.md
└── O2.md
The plugin no longer creates:
- one file per key result
- one file per check-in
- a dedicated
Check-inssettings path
Instead, each objective file contains all related key results and their progress history.
Commands
Command labels follow the active plugin language. In English, the commands are:
| Command | Description |
|---|---|
New objective |
Create a new objective |
New key result |
Add a key result to an objective |
Record progress |
Record a progress update for a key result |
Open dashboard |
Open or focus the OKR dashboard |
If Obsidian is using Simplified Chinese, the plugin UI and command names switch to Chinese automatically.
Period formats
| Type | Format | Example |
|---|---|---|
| Week | YYYY-Www |
2026-W20 |
| Month | YYYY-MM |
2026-05 |
| Quarter | YYYY-Qn |
2026-Q2 |
| Year | YYYY |
2026 |
Objective file model
Each objective file stores:
- objective metadata
- a
key-resultsarray - embedded
checkInsarrays inside each key result - a reserved block for plugin-rendered key result content
Example:
---
okr-type: objective
okr-id: O1
okr-period: 2026-Q2
okr-period-type: quarter
title: Improve engineering quality
owner: Team Lead
status: active
progress: 68
due: 2026-06-30
key-results:
- okr-id: O1-KR1
title: Reach 100% review coverage
current: 80
target: 100
progress: 80
order: 0
checkIns:
- id: O1-KR1-1740000000000
date: 2026-05-18
progress: 80
delta: 10
note: Improved review coverage for backend modules
---
Progress rules
Key result progress:
booleanbecomes100%when completed, otherwise0%- other numeric units use
current / target * 100 - if
target <= 0, progress is0% - progress is clamped to
0–100
Objective progress:
- average of all non-cancelled key results
0%when no valid key results exist
Reordering key results
- The dashboard supports drag-and-drop reordering.
- The updated order is written back to the objective file.
- The detail renderer still provides move actions as a fallback interaction.
Overdue objectives
If an objective is past its due date and is not completed or cancelled, the plugin:
- marks it as overdue
- shows a reminder in the dashboard
- highlights it visually
- lets you postpone the due date from the dashboard or detail view
Language behavior
- Default language: English
- Supported language: Simplified Chinese (
zh-CN) - Unknown or unsupported locales fall back to English
- Existing notes are not rewritten automatically when you change the UI language
Legacy data model
This version does not support the old prototype where:
- each key result had its own Markdown file
- progress updates were stored as standalone check-in files
- a separate check-in directory was configurable in settings
If you previously used that prototype, reorganize your data into the current objective-based structure manually.
FAQ
Does the plugin create a separate file for every key result?
No. Key results are embedded inside the objective file.
Does the plugin still create a Check-ins folder?
No. Progress history is now stored inside the objective file under each key result.
Can I record progress multiple times on the same day?
Yes. Multiple updates on the same day are supported.
What happens when an objective becomes overdue?
The dashboard shows an overdue indicator and reminder, and you can postpone the due date directly from the UI.
Does this plugin send data to any online service?
No. The plugin stores everything in your local vault.
Can I use week and month periods instead of quarter periods?
Yes. The plugin supports week, month, quarter, and year period types.
Can I use it on mobile?
Yes. The plugin is not desktop-only.
Development
git clone https://github.com/jingmengzhiyue/obsidian-okr-manager.git
cd obsidian-okr-manager
npm install
npm run dev
Useful commands:
npm run build
npm run lint
npm test
Before publishing a release:
- Update
manifest.json - Update
package.json - Update
versions.json - Run
npm run build - Confirm
main.js,manifest.json, andstyles.cssare attached to the GitHub release as individual assets
Privacy
Vault OKR Manager runs locally inside your vault:
- no remote execution
- no hidden telemetry
- no external API requirement
License
This project is licensed under the MIT License.