Skip to main content

Onyxian

PyPI CI Python License: MIT

Onyxian scaffolds and operates a tailored Obsidian vault, composed from opt-in modules. Pick the domains you care about and Onyxian wires up the folders, typed frontmatter, Bases views, and templates for each. The same framework serves a researcher, a PhD student, a musician, and a product manager, with different module sets and different folder names.

Three things hold true everywhere:

  • It works without any AI. Templates are plain copies, views are plain files. Optional Claude Code skills and agents amplify the vault, but nothing depends on them.
  • It never clobbers your files. Every file Onyxian writes is tracked. A file you edited is yours: updates that would overwrite it arrive as a *.new sibling instead, never a silent overwrite. There is no flag that overrides this.
  • It's tailored to you. Folder names, cadences, and structures are per-vault variables, not baked-in opinions.

onyxian init planning and creating a complete PhD-student vault — folders, templates, Bases views, and agents — from one command

Install

In Claude Code (nothing to set up)

/plugin marketplace add odysseia06/onyxian
/plugin install onyxian@onyxian
/vault-bootstrap

The plugin ships guided setup. On first run it installs the CLI for you and walks you from an empty folder, or an existing vault, to a working setup — a conversation, not a questionnaire.

As a command-line tool

uv tool install onyxian      # or:  pipx install onyxian

Then create a vault:

onyxian init my-vault                                  # core-only vault, zero questions
onyxian init my-vault --profile researcher-developer   # or a full preset in one shot

Open the folder in Obsidian and you're done.

From source

git clone https://github.com/odysseia06/onyxian && cd onyxian
python -m venv .venv
# Windows: .venv\Scripts\activate     macOS/Linux: source .venv/bin/activate
pip install -e ".[dev]"
pytest

Using it

Command What it does
onyxian init <folder> Create a new vault: core-only from defaults, or a full preset via --profile/--answers. Refuses a non-empty folder.
onyxian adopt <vault> Bring an existing vault under management. Additive only, behind a reviewed plan.
onyxian add <module> Enable a module (its dependencies come with it). Also takes a git URL or local directory to install a third-party module, behind a trust warning.
onyxian remove <module> Disable a module. Deletes only unmodified framework files; your edits stay.
onyxian update Pull newer module and skill versions. Files you changed are never overwritten; --answers supplies variables required by a new version.
onyxian plan / onyxian apply Preview the diff, then reconcile. Every mutating command takes --dry-run.
onyxian doctor Check the vault against its declared intent. Read-only.
onyxian lock reconcile Repair a sync-forked lockfile through an explicit, disk-verified survivor choice.
onyxian modules List available modules with their variables and defaults.
onyxian modules new <id> Scaffold your own module.
onyxian modules lint [path] Check a module against the authoring conventions. Read-only; the same check the bundled library passes in CI.
onyxian new <scaffold> <name> Instantiate a module's copy-per-instance template: new course, new game, new piece, new project. Repoints the template's Base filters at the copy.

Adopting an existing vault is the safe path. onyxian adopt <vault> --dry-run is read-only: it maps your existing folders onto module variables, proposes a purely additive plan, and parks anything ambiguous on a checklist instead of touching it. Nothing is moved, renamed, deleted, or overwritten. There is no --yes on adopt — in a terminal you review the plan and type adopt to confirm; non-interactively (scripts, agents), the review prints an acceptance token derived from the exact plan shown, and you apply with --accept <token>. (Commit your vault to git first; Onyxian will remind you.)

How it works

The engine is a small CLI built on a declarative reconciliation loop:

  • .vault/config.yaml declares intent — which modules, with which variables. Yours to edit.
  • .vault/lock.json records state — every file Onyxian has written, with its hash, write generation, and machine id. Machine-maintained.
  • onyxian plan computes the difference; onyxian apply reconciles it.

Every file Onyxian writes is one of two kinds. Managed files (templates, views, skills) update themselves while you leave them alone, and turn into *.new deliveries the moment you customize them. Seeded files (your home note, a strategy note) are written once and yours from then on. Everything else in the vault is invisible to Onyxian, and it will never write there.

Modules

Module What it gives you
core The shared conventions, the Templates/ root, and the home note every module builds on.
daily-notes One note per day with task-rollover queries (due, scheduled, overdue, carry-over, captured) and natural-language task capture.
academic Courses from a copy-per-course template; exam prep tracked through a Base.
fitness Training, nutrition, and body tracking, driven by a Strategy note you own.
research A typed paper pipeline: PDF to summary to topic links, over a multi-view Paper Library Base.
reading An Inbox to Articles to Evergreen pipeline, with web clipping.
projects-software Per-project devlogs, decision logs, subsystem notes, and a task Base.
projects-gamedev Game projects as living wikis: design, mechanics, worldbuilding, devlog.
oss Open-source tracking from watchlist to contribution, with staleness-aware Bases.
music Theory, practice, composition, production, listening, and copy-per-piece projects.
writing An editorial blog pipeline: ideas to drafts to published, with series and a calendar.
ai-workspace A prompts library and an agent-skills workbench.
meetings Typed meetings and people: 1:1 and decision-meeting templates, a status-driven meeting board, a people directory.

Enable any combination with onyxian add, or start from a profile (a named module set): minimal, creator, developer, fitness-focused, gamedev, musician, phd-student, product-manager, student, writer, or researcher-developer.

Modules are data, not code, so the roster isn't closed: scaffold your own with onyxian modules new <id>, publish it as a git repository, and anyone can install it with onyxian add <url> (they'll see a trust warning first — a module can't execute anything, but a malicious template is still a social-engineering surface).

The agent layer (optional)

When you use Claude Code, each enabled module installs scoped skills and a per-domain agent into .claude/daily-planner, research-librarian, study-coach, fitness-coach, and so on, each with a documented read/write scope it operates within. A generated CLAUDE.md orients Claude the moment you open the vault, pointing at the agents and the operating rules so a plain request reaches the right one; other runtimes get a generated AGENTS.md.

These agents don't only suggest — they operate the live vault through Obsidian's official command-line interface: scaffold and triage the day, capture a task from a sentence ("add a task to fix this by Friday"), log a coding session or record a decision ("we decided X because Y"), file a typed paper summary, and so on — you reach the right agent just by saying what you want. Every write follows one contract (the vault-operations skill): additive by default, inside the agent's scope, escalating rather than guessing. These scopes are conventions the agents are instructed to honor, not a filesystem sandbox — the user guide says exactly what kind of guarantee that is. Opt-in vault checkpoints provide the recovery net: inspect with onyxian checkpoint diff, then restore one path or the whole vault with onyxian checkpoint restore <id> [path...]. Delete .claude/ entirely and the vault still works as plain files; the agent layer is power, never a dependency.

Documentation

  • docs/user-guide.md — the user guide: install, quickstart, adopting an existing vault, everyday operations, *.new files, the agent layer, a full module reference, and troubleshooting. Start here.
  • CONTRIBUTING.md — how to work on Onyxian and author modules.
  • RELEASING.md — how releases are cut and published.

License

MIT.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

onyxian-0.2.0.tar.gz (918.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

onyxian-0.2.0-py3-none-any.whl (294.6 kB view details)

Uploaded Python 3

File details

Details for the file onyxian-0.2.0.tar.gz.

File metadata

  • Download URL: onyxian-0.2.0.tar.gz
  • Upload date:
  • Size: 918.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for onyxian-0.2.0.tar.gz
Algorithm Hash digest
SHA256 74042b8dbeabdd3489f2d35f1085e20e71b9ecf8a8c70717e9531748d84493f2
MD5 75d50d3ecd0c48673310b5b45ccdc025
BLAKE2b-256 d3b0da7298e3ca6033911311e3c1a549cc1f76d61b414bf88d9c3904f268584f

See more details on using hashes here.

Provenance

The following attestation bundles were made for onyxian-0.2.0.tar.gz:

Publisher: publish.yml on odysseia06/onyxian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file onyxian-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: onyxian-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 294.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for onyxian-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0313f9f98dce43e27f710148a41ac0a761e6bb1736363dda1bf480a04cf6d6e1
MD5 836bf166cd3853a6e01edbaaa4dd83ef
BLAKE2b-256 a40b15e752af85d0db9892377bfd5516d318a7b9e0f803896bd87da4fe3f3439

See more details on using hashes here.

Provenance

The following attestation bundles were made for onyxian-0.2.0-py3-none-any.whl:

Publisher: publish.yml on odysseia06/onyxian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page