Aethel: AI Context & Memory CLI Management Utility
Project description
Aethel: AI Context & Knowledge Management System
Aethel is a lightweight, provider-agnostic context and prompt management boilerplate for AI agents in solo-developer projects. It separates human-authored rules (Markdown) from an AI-maintained Markdown knowledge layer — a curated index plus a tree of atomic topic files — with no server or external runtime dependency.
1. File Structure
AETHEL.md: Canonical human-written orchestrator — decision routing, RNA-Blueprint plan templates, and critical coding taboos.AGENTS.md: Universal cross-agent entry point. Read natively by most coding agents; it redirects toAETHEL.md.GEMINI.md/CLAUDE.md: Thin redirect stubs (for tools that look for those names) pointing atAGENTS.md/AETHEL.md.CONTEXT.md: Anllms.txt-style index — an H1, a one-line summary, then H2 sections of annotated inline links into the knowledge tree. Curated, not exhaustive; kept under 150 lines.knowledge/: Atomic topic files (one layer / subsystem / bounded context each,name+descriptionfrontmatter). Detail lives here, not in the index. Design decisions are append-only ADRs underknowledge/decisions/NNNN-*.md.aethel.toml(optional): Linter policy — required-header keywords, language rules, spec-sync, and[knowledge]index/orphan settings. Omit to use built-in defaults.
2. The Markdown Knowledge Architecture
Structured knowledge is plain Markdown — there is nothing to install or wire up:
- The index (
CONTEXT.md) maps the project. Each entry is one inline link to a topic file with a one-line note. - Each topic file under
knowledge/is a single unit-of-change and unit-of-retrieval. - Decisions are recorded as numbered ADRs under
knowledge/decisions/.
The linter (aethel lint → check_knowledge_index) keeps the index honest: a relative inline
link that does not resolve on disk is an error; a knowledge/*.md file not reachable from
the index is an orphan warning. External (http(s)/mailto) links and #anchors are
ignored. Use inline links only — reference-style links and autolinks are intentionally not
parsed. Severities are configurable in aethel.toml under [knowledge].
Earlier versions stored structured knowledge in a Memory MCP server /
memory.jsongraph. That layer has been retired in favour of this provider-agnostic Markdown architecture; see knowledge/decisions/0001-retire-memory-graph.md.
3. CLI
aethel init [path] # scaffold a workspace (AGENTS.md, AETHEL.md, CONTEXT.md, knowledge/, ...)
aethel init --recipe python # also deploy a stack-specific linter recipe
aethel update [path] # refresh the managed core block non-destructively
aethel eject [path] # mark the managed core block as sanctioned divergence
aethel eject [path] --undo # remove the eject stamp, restoring managed updates
aethel lint [path] # validate plan/checklist + knowledge-index integrity + hygiene
aethel init also installs a Git pre-commit hook that runs the linter, including the spec-sync
drift guard (code staged without a spec update is flagged — Route C). Escape hatch for an
intentionally spec-irrelevant commit: AETHEL_SKIP_SYNC=1 git commit ....
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 aethel_cli-1.2.0.tar.gz.
File metadata
- Download URL: aethel_cli-1.2.0.tar.gz
- Upload date:
- Size: 68.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a1347899f113f334b1dc18af3f735002e5cd54bb157b46995c5806ad0dee7d1
|
|
| MD5 |
11f67c204d19002dc3ee35edb079d307
|
|
| BLAKE2b-256 |
cf9cf6d7180baa832a20051bce17daebf91ec15269e0733889b541e3db2d18ce
|
Provenance
The following attestation bundles were made for aethel_cli-1.2.0.tar.gz:
Publisher:
publish.yml on dimaj26/aethel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aethel_cli-1.2.0.tar.gz -
Subject digest:
4a1347899f113f334b1dc18af3f735002e5cd54bb157b46995c5806ad0dee7d1 - Sigstore transparency entry: 1931484494
- Sigstore integration time:
-
Permalink:
dimaj26/aethel@94e5d819761e7f2975e58adda4a542c42cb07157 -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/dimaj26
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@94e5d819761e7f2975e58adda4a542c42cb07157 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aethel_cli-1.2.0-py3-none-any.whl.
File metadata
- Download URL: aethel_cli-1.2.0-py3-none-any.whl
- Upload date:
- Size: 55.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b806c822deba608097f412ae99622e532fa6494c1e302d126d37d984b4f5e049
|
|
| MD5 |
d249d7ab6d9677196db87d3e5fa92eeb
|
|
| BLAKE2b-256 |
3866be895fb5344d96ea2a582382adf033448d6c61e3122eea94b93b7a87b199
|
Provenance
The following attestation bundles were made for aethel_cli-1.2.0-py3-none-any.whl:
Publisher:
publish.yml on dimaj26/aethel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aethel_cli-1.2.0-py3-none-any.whl -
Subject digest:
b806c822deba608097f412ae99622e532fa6494c1e302d126d37d984b4f5e049 - Sigstore transparency entry: 1931484597
- Sigstore integration time:
-
Permalink:
dimaj26/aethel@94e5d819761e7f2975e58adda4a542c42cb07157 -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/dimaj26
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@94e5d819761e7f2975e58adda4a542c42cb07157 -
Trigger Event:
push
-
Statement type: