Skip to main content

Yet ANother Knowledge App — capture engineering decisions from conversation and retrieve them later.

Project description

yanka

Log engineering decisions in conversation. Find them later with plain English.

yanka is a local-first CLI for your own engineering memory. You /log what you decided; it becomes structured markdown on disk. You /ask a question months later and get answers with citations — no digging through notes, no "why did I choose this again?"

Your data stays on your machine. Markdown is the source of truth; search indexes rebuild from files anytime.


Install

Requirements: Python 3.12 or newer.

pip (macOS, Linux, Windows)

pip install yanka

Homebrew (macOS)

brew tap Nambu14/yanka
brew install yanka

Quick start

yanka

On first run, yanka creates ~/.yanka and walks you through LLM provider setup (Claude, OpenAI, Google, or local Ollama). Then you're in the REPL:

/log We chose Postgres over Dynamo for the audit trail — I know SQL, need ad-hoc queries
/ask Why did we pick Postgres for audit?
Command What it does
/log [text] Capture a decision (inline or guided)
/ask [question] Query your knowledge base with citations
/rebuild Re-index from markdown if something looks stale
/help Full command list

What yanka does

  • Capture — free-form /log notes become structured decision records (markdown + metadata).
  • Index — local graph + vector store for semantic and relational retrieval.
  • Retrieve/ask answers with links to the records that support them.
  • Recover — indexes are disposable; /rebuild reconstructs everything from files alone.

Everything lives under ~/.yanka/:

~/.yanka/
├── records/          # Markdown records (source of truth)
├── graph/            # LadybugDB index (rebuildable)
├── vectors/          # LanceDB index (rebuildable)
└── config.yaml       # Provider, models, paths

First-run defaults

The setup wizard picks a fast/cheap default model per provider (similar tier to gpt-4o-mini):

Provider Default model
Claude claude-3-5-haiku-latest
OpenAI gpt-4o-mini
Google gemini-2.0-flash-lite
Ollama llama3.2:3b

Change models in config.yaml or inspect effective values with /config.


Common recovery flows

  • Stale index warning in /ask — run /rebuild, then retry.
  • Interrupted /log — run /resume.
  • Something broke — check ~/.yanka/runtime/yanka.log.

Developing

Clone the repo and install with dev dependencies:

git clone https://github.com/Nambu14/yanka.git
cd yanka
pip install -e ".[dev]"
pytest -q

See docs/architecture.md and yanka-spec.md for the full product and data model.


Releases (maintainers)

Nothing runs on push or tag by itself. You cut a release when you choose.

CI on pull requests and main

The CI workflow runs on every pull request and on pushes to main (lint + full test suite). Merge only after CI is green.

Release flow

The git tag is the version — there is no version string to edit in source. hatch-vcs derives it from the latest v* tag.

Actions → Release → Run workflow — enter the version, run. No version-bump commit or PR.

Input Meaning
version e.g. 0.3.0 (no v prefix)
publish false: draft GitHub Release only. true: publish release + upload to PyPI.

The workflow builds on macOS, Linux, and Windows, creates tag v<version>, attaches release assets (including yanka-<version>.tar.gz for Homebrew), and optionally publishes to PyPI.

After a draft release, open Releases on GitHub and click Publish when ready.

Update the homebrew-yanka tap via Actions → Update formula (opens a PR with url + sha256 from the release).

Local build:

pip install build
python scripts/build_release.py --version 0.3.0
ls release/

License

Apache License 2.0 — see LICENSE.

Documentation

Project details


Download files

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

Source Distribution

yanka-0.3.2.tar.gz (321.7 kB view details)

Uploaded Source

Built Distribution

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

yanka-0.3.2-py3-none-any.whl (121.9 kB view details)

Uploaded Python 3

File details

Details for the file yanka-0.3.2.tar.gz.

File metadata

  • Download URL: yanka-0.3.2.tar.gz
  • Upload date:
  • Size: 321.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for yanka-0.3.2.tar.gz
Algorithm Hash digest
SHA256 a52dd7b5e03f120b37dfb1459750cdcc410aeb12f16480a439efe94341294252
MD5 813de19c4d0018f6f0e251b5eeebd4c5
BLAKE2b-256 d5ae2c17916e7326ede9f911c55cae252c9dd2029641e6b7ac86023b9802336a

See more details on using hashes here.

Provenance

The following attestation bundles were made for yanka-0.3.2.tar.gz:

Publisher: release.yml on Nambu14/yanka

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

File details

Details for the file yanka-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: yanka-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 121.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for yanka-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1d51c2c98bd9ac9d91c30c50a32f5fada4b11025944b67dc38d98b8892f4dcc6
MD5 fb85752238484821b8ac0ae4b04be210
BLAKE2b-256 84708b173e8c0cd66f3e64d7f657252a34bf2002dcbb532d704c9657f5d7d920

See more details on using hashes here.

Provenance

The following attestation bundles were made for yanka-0.3.2-py3-none-any.whl:

Publisher: release.yml on Nambu14/yanka

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

Supported by

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