{"id":47594875,"url":"https://github.com/ericchansen/copilot-obsidian","last_synced_at":"2026-04-01T17:59:27.435Z","repository":{"id":345613974,"uuid":"1186674642","full_name":"ericchansen/copilot-obsidian","owner":"ericchansen","description":"A GitHub Copilot CLI extension that connects your Obsidian vault to the Copilot agent","archived":false,"fork":false,"pushed_at":"2026-03-19T22:24:18.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-20T13:14:32.615Z","etag":null,"topics":["copilot","copilot-cli","extension","github-copilot","knowledge-management","markdown","obsidian"],"latest_commit_sha":null,"homepage":"https://github.com/ericchansen/copilot-obsidian","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ericchansen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-19T21:53:52.000Z","updated_at":"2026-03-19T22:24:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ericchansen/copilot-obsidian","commit_stats":null,"previous_names":["ericchansen/copilot-obsidian"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ericchansen/copilot-obsidian","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericchansen%2Fcopilot-obsidian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericchansen%2Fcopilot-obsidian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericchansen%2Fcopilot-obsidian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericchansen%2Fcopilot-obsidian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ericchansen","download_url":"https://codeload.github.com/ericchansen/copilot-obsidian/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericchansen%2Fcopilot-obsidian/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["copilot","copilot-cli","extension","github-copilot","knowledge-management","markdown","obsidian"],"created_at":"2026-04-01T17:59:26.133Z","updated_at":"2026-04-01T17:59:27.408Z","avatar_url":"https://github.com/ericchansen.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# copilot-obsidian\n\nA [GitHub Copilot CLI](https://docs.github.com/copilot/concepts/agents/about-copilot-cli) extension that connects your [Obsidian](https://obsidian.md/) vault to the Copilot agent. Read, write, search, and manage your notes directly from the terminal — no Obsidian plugin required.\n\n## Why?\n\nObsidian vaults are just folders of markdown files. This extension gives the Copilot CLI agent direct access to your vault, turning it into a **persistent knowledge layer** for your AI-powered workflow.\n\nUse cases:\n- **Knowledge graphs** — build and maintain a personal wiki that Copilot can read and update\n- **Meeting notes** — have Copilot create structured notes during or after meetings\n- **Research** — search your vault for context while working on tasks\n- **Daily journals** — auto-populate daily notes from activity\n- **Project docs** — keep project documentation in Obsidian and let Copilot reference it\n- **Backlink exploration** — discover how ideas connect across your vault\n\n## Install\n\nClone this repo into your Copilot CLI user extensions directory:\n\n```bash\n# macOS / Linux\ngit clone https://github.com/ericchansen/copilot-obsidian ~/.copilot/extensions/copilot-obsidian\n\n# Windows (PowerShell)\ngit clone https://github.com/ericchansen/copilot-obsidian \"$env:USERPROFILE\\.copilot\\extensions\\copilot-obsidian\"\n```\n\nThen restart Copilot CLI (or run `/clear`). The extension is auto-discovered.\n\n### Per-project install\n\nTo bundle with a specific project, clone into `.github/extensions/` instead:\n\n```bash\ngit clone https://github.com/ericchansen/copilot-obsidian .github/extensions/copilot-obsidian\n```\n\n## Configuration\n\nThe extension supports a **config file** (`obsidian.config.json`) placed in the extension directory, with fallback to environment variables.\n\nCopy the example to get started:\n\n```bash\ncp obsidian.config.example.json obsidian.config.json\n```\n\n\u003e **Note:** `obsidian.config.json` is gitignored — your personal config stays local.\n\n### Config file reference\n\n```json\n{\n  \"vault\": \"~/ObsidianVaults/MyVault\",\n\n  \"folders\": {\n    \"Projects\": { \"description\": \"Active projects and initiatives\" },\n    \"Meetings\": { \"description\": \"Meeting notes and summaries\" },\n    \"DailyNotes\": { \"description\": \"Daily journal entries\" }\n  },\n\n  \"keywords\": [\"vault\", \"obsidian\", \"note\", \"project\", \"meeting\"],\n\n  \"daily\": {\n    \"folder\": \"DailyNotes\",\n    \"template\": \"---\\ndate: {{date}}\\n---\\n\\n# {{date}}\\n\\n## Notes\\n\\n\"\n  },\n\n  \"templates\": {\n    \"Meeting\": \"---\\ntype: meeting\\ndate: {{date}}\\n---\\n\\n# {{title}}\\n\\n## Attendees\\n\\n## Notes\\n\\n\",\n    \"Person\": \"---\\ntype: person\\n---\\n\\n# {{title}}\\n\\n## Notes\\n\\n\"\n  }\n}\n```\n\n| Key | Description |\n|---|---|\n| `vault` | Absolute path to your vault. Supports `~` for home directory. |\n| `folders` | Optional folder descriptions — shown in `vault_list` and injected context. |\n| `keywords` | Words that trigger automatic context injection when mentioned in prompts. |\n| `daily.folder` | Folder for daily notes (default: `DailyNotes`). |\n| `daily.template` | Template for new daily notes. Supports `{{date}}` placeholder. |\n| `templates` | Named templates for `vault_write`. Supports `{{date}}` and `{{title}}`. |\n\n### Environment variables (fallback)\n\nIf no config file is present, the extension uses environment variables:\n\n| Variable | Description | Default |\n|---|---|---|\n| `OBSIDIAN_VAULT_PATH` | Absolute path to your vault | — |\n| `OBSIDIAN_VAULT_NAME` | Vault folder name (under `~/ObsidianVaults/`) | `MyVault` |\n| `OBSIDIAN_KEYWORDS` | Comma-separated context-injection keywords | `vault,obsidian,note,knowledge` |\n\n## Tools\n\n| Tool | Description |\n|---|---|\n| `vault_read` | Read a note's full markdown content |\n| `vault_write` | Create or update a note (supports templates, frontmatter, wikilinks) |\n| `vault_append` | Append content to an existing note without overwriting |\n| `vault_list` | List folders in the vault, or notes in a specific folder |\n| `vault_search` | Full-text search with optional frontmatter filters (`type`, `status`, `tags`) |\n| `vault_summary` | Vault overview: folder counts, note counts, wikilink stats |\n| `vault_backlinks` | Find all notes that `[[link]]` to a given note |\n| `vault_recent` | List recently modified notes (sorted by last-modified time) |\n| `vault_daily` | Read or create today's daily note from template |\n| `vault_delete` | Delete a note |\n| `vault_rename` | Rename or move a note between folders |\n\n### Context injection\n\nWhen you mention any of the configured keywords in your prompt, the extension automatically injects your vault structure as context. The agent sees your folders, note counts, and descriptions without needing to call any tools first.\n\n### Frontmatter search\n\n`vault_search` can filter by YAML frontmatter fields:\n\n```\nSearch for all meeting notes about \"architecture\":\n  → query: \"architecture\", type: \"meeting\"\n\nFind all active projects:\n  → type: \"project\", status: \"active\"\n\nFind notes tagged with \"urgent\":\n  → tags: \"urgent\"\n```\n\n### Backlinks\n\n`vault_backlinks` finds every note that contains a `[[wikilink]]` to a given note — the same graph-traversal that powers Obsidian's graph view, now accessible to the agent.\n\n## How it works\n\n```\n┌─────────────────────┐       JSON-RPC / stdio       ┌──────────────────────┐\n│   Copilot CLI        │ ◄──────────────────────────► │  copilot-obsidian    │\n│                      │                               │                      │\n│  Routes tool calls   │     vault_read, vault_write   │  Reads/writes .md    │\n│  Injects context     │     vault_search, etc.        │  files on disk       │\n└─────────────────────┘                               └──────────────────────┘\n                                                              │\n                                                              ▼\n                                                     ┌──────────────────┐\n                                                     │  Obsidian Vault  │\n                                                     │  (local folder)  │\n                                                     │                  │\n                                                     │  📁 Projects/    │\n                                                     │  📁 DailyNotes/  │\n                                                     │  📁 People/      │\n                                                     │  📁 ...          │\n                                                     └──────────────────┘\n```\n\nThe extension operates **directly on the filesystem**. Obsidian watches the vault folder for changes, so any notes created or updated by Copilot appear instantly in Obsidian. No Obsidian plugin or API is needed.\n\n## Requirements\n\n- [GitHub Copilot CLI](https://docs.github.com/copilot/concepts/agents/about-copilot-cli) v1.0.0+\n- An Obsidian vault (any folder of markdown files)\n- Node.js is **not** required separately — the Copilot CLI runtime provides it\n\n## Tips\n\n- **Use `[[wikilinks]]`** in your notes to build a knowledge graph. Use `vault_backlinks` to explore connections.\n- **YAML frontmatter** (the `---` block at the top) enables structured search with `vault_search` filters.\n- **Templates** save time — define them in your config and use `vault_write` with the `template` parameter.\n- **`vault_daily`** is great for daily standups — the agent can read today's note for context or create one if it doesn't exist.\n- **Set keywords** for your domain — if you work with accounts, add `account` to keywords so context auto-injects.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericchansen%2Fcopilot-obsidian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericchansen%2Fcopilot-obsidian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericchansen%2Fcopilot-obsidian/lists"}