A robust, fast, and feature-rich CLI for syncing Obsidian vault to Anki.
Project description
Arete (formerly o2a)
Pro-grade synchronization from Obsidian to Anki.
arete is a robust, fast, and feature-rich tool that adheres to a strict One-Way Sync philosophy: Obsidian is the Source of Truth.
graph TD
subgraph "Obsidian Vault"
MD["Markdown Files"]
Media["Images/Files"]
end
subgraph "Sync Component (Arete)"
CLI["Python CLI"]
Plugin["Obsidian Plugin (GUI wrapper)"]
Cache[("SQLite Cache")]
end
subgraph "Anki"
AC["AnkiConnect / apy"]
CollectionMedia["collection.media (Filesystem)"]
Cards["Anki Decks"]
end
MD --> Plugin
Plugin -- "Invokes" --> CLI
CLI <--> Cache
CLI -- "Pushes Notes" --> AC
CLI -- "Copies Media" --> CollectionMedia
AC --> Cards
📚 Documentation
- CLI Guide: Command-line usage, configuration, and syntax.
- Obsidian Plugin Guide: Installation and usage of the Obsidian plugin.
- Architecture: Deep dive into how it works.
- Troubleshooting: Common fixes for WSL, networking, and sync issues.
Quick Start
1. Install CLI (Python)
Ensure you have uv installed.
git clone https://github.com/Adanato/obsidian_2_anki
cd obsidian_2_anki
uv sync
2. Install Plugin (Optional)
Download main.js, manifest.json, styles.css from Releases and place in .obsidian/plugins/obsidian-2-anki.
3. Initialize & Sync
uv run arete init # Set up your vault path
uv run arete sync # First sync (will scan and link cards)
Key Features
- ⚡ Fast: SQLite caching skips unchanged files, making syncs near-instant.
- 🧹 Prune Mode: Automatically removes cards from Anki that you've deleted in Obsidian.
- 🩹 Self-Healing: Fixes duplicate IDs or broken links automatically.
- 📐 MathJax/LaTeX: Native protection for complex mathematical notation.
- 📸 Media Support: Full synchronization of local images and attachments.
- 💻 WSL Friendly: Specialized bridge for Windows Subsystem for Linux users.
License
MIT
Roadmap
- Community Plugin: Official Obsidian Community Plugins list submission.
- PyPI Release: Publish as
obsiankiviauv publish. - Cloud Sync: Research remote sync strategies.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arete-1.0.0.tar.gz.
File metadata
- Download URL: arete-1.0.0.tar.gz
- Upload date:
- Size: 112.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a483b8baec7ce5458f87309ae247a8f1cd414d4e87f8ed0e2fd08cc553a62757
|
|
| MD5 |
72bdbd0e6d7a926e8399a551da4349ab
|
|
| BLAKE2b-256 |
5e8235bee1a1b05114bd05067c8ab76dfbcc97abddc26dff68fd44a4fc66e7f5
|
Provenance
The following attestation bundles were made for arete-1.0.0.tar.gz:
Publisher:
release.yml on Adanato/obsidian_2_anki
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arete-1.0.0.tar.gz -
Subject digest:
a483b8baec7ce5458f87309ae247a8f1cd414d4e87f8ed0e2fd08cc553a62757 - Sigstore transparency entry: 791253140
- Sigstore integration time:
-
Permalink:
Adanato/obsidian_2_anki@751957e66ccfc6dd6b5f6461eb90010d378b2c2c -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/Adanato
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@751957e66ccfc6dd6b5f6461eb90010d378b2c2c -
Trigger Event:
push
-
Statement type:
File details
Details for the file arete-1.0.0-py3-none-any.whl.
File metadata
- Download URL: arete-1.0.0-py3-none-any.whl
- Upload date:
- Size: 38.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bef03648a87330314d828aec791fa140617f943fbb3c2d519c1d6c8a9a50fbda
|
|
| MD5 |
5b0bfc4211355c802ab470d9a5e6a767
|
|
| BLAKE2b-256 |
819793aaaf478deb85c98568668143b8905ca5a26b1e42912efea81493e129c2
|
Provenance
The following attestation bundles were made for arete-1.0.0-py3-none-any.whl:
Publisher:
release.yml on Adanato/obsidian_2_anki
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arete-1.0.0-py3-none-any.whl -
Subject digest:
bef03648a87330314d828aec791fa140617f943fbb3c2d519c1d6c8a9a50fbda - Sigstore transparency entry: 791253145
- Sigstore integration time:
-
Permalink:
Adanato/obsidian_2_anki@751957e66ccfc6dd6b5f6461eb90010d378b2c2c -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/Adanato
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@751957e66ccfc6dd6b5f6461eb90010d378b2c2c -
Trigger Event:
push
-
Statement type: