Metadata-Version: 2.4
Name: awkno
Version: 0.2.0
Summary: The man page for the Aither World — every brick, stack and law, in your terminal, offline.
License: Apache-2.0
Project-URL: Homepage, https://github.com/Aitherium/awkno
Project-URL: Documentation, https://github.com/Aitherium/awkno#readme
Project-URL: Repository, https://github.com/Aitherium/awkno.git
Project-URL: Issues, https://github.com/Aitherium/awkno/issues
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyYAML>=6.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Dynamic: license-file

# awkno — The man page for the Aither World

**Every brick, stack, and law in your terminal, offline.**

awkno is a standalone reference for the Aither World ecosystem — the set of portable, composable tools and principles that make agent automation reproducible and auditable. No browser, no internet connection, no external dependencies needed.

## Why

Agent systems need documented principles. The Aither World is built on 18 laws derived from real failures on production systems — lessons about gates, silence, atomicity, and delivery that apply to every agent work you build.

The ecosystem itself is ~36 portable tools (bricks) organized into thematic stacks. awkno brings them all into your terminal: any brick's purpose and adoption path, any law's principle and reasoning, any stack's composition and status — all offline, all fast, queryable by keyword, and open to reading and redistribution.

## Quick Start

### Install

```bash
pip install awkno
```

### Use

```bash
# Show a brick
awkno awdk
awkno awsh

# Show a law
awkno law 5

# List everything
awkno list

# Search for a term
awkno search agent
awkno -k silence

# Raw output for piping
awkno awdk --plain
awkno --json awdk
```

### No Arguments

```bash
awkno
```

Shows the overview: command summary, quick start examples, and how to explore further.

## What's Inside

### Bricks (36 tools)

Portable, single-purpose tools that do one job well and compose with others:

- **awdk** — Build AI agent fleets (3 lines, any backend)
- **awskills** — Portable agent skills (self-contained procedures)
- **awm** — Scoped agent memory (tenant:user:project boundaries)
- **awgit** — Semantic version control (edit-ops, leases)
- **awgraph** — Code graph for agents (AST, call graphs)
- **awrelay** — Agent messaging (findings, alerts, coordination)
- **awmail** — Email for agents (send and receive)
- **And 29 more...**

Each has an "adopt" sentence: the smallest useful thing you can do with it alone, without adopting anything else.

### Stacks (9 collections)

Curated sets of bricks that work together:

- **agent-vm** — The bare agent VM
- **agent-senses** — Perception (search, pages)
- **shared-worktree** — Many agents, one repo
- **the-front-door** — Identity, authority, record
- **And 5 more...**

### Laws (18 principles)

Lessons learned in production, written down so they don't have to be re-derived:

1. A rule nothing asserts is a suggestion
2. Make it a check, not a ticket
3. Watch your gate fail
4. Mutate the test, not just the code
5. Design for the silence
6. A check that cannot run must not pass
7. The symptom names the innocent
8. A checker in the wrong place found nothing
9. Detection without delivery is not detection
10. A gate that floods gets switched off
11. Open green; ratchet down
12. Measure it again
13. Written is not deployed
14. You wrote it; that does not mean it ships
15. Generate, never copy
16. The defect lives in the union
17. Fail closed, then prove the happy path
18. Never trust the caller

## Architecture

### Offline-First Design

The corpus is **generated once** from `ecosystem.yaml` and `awknowledge/laws/`, then **committed as JSON data files** under `awkno/pages/`. After install, the package needs no external files or network.

This means:
- No runtime generation (fast startup)
- No external dependencies beyond stdlib
- Reproducible across machines and time
- Auditable: every page is in the repo

### CLI Features

- **Pager support**: Automatic pagination on TTY (via `$PAGER` or system default)
- **TTY-aware formatting**: ANSI bold headers only when connected to a terminal
- **Multiple output modes**:
  - `--plain` — No ANSI codes (safe for piping to other tools)
  - `--json` — Structured output for scripting
  - Default — Man-page-style formatted text
- **Fuzzy search**: Type something close, get ranked results
- **Command shortcuts**:
  - `awkno list` — Show all topics grouped by category
  - `awkno law N` — Show law by number
  - `awkno -k TERM` / `awkno --apropos TERM` — Search (like `man -k`)

### No Internal Leakage

This package is built for public distribution, and the corpus is GENERATED from
an internal registry -- so the generator strips, and the build then re-checks,
every category of internal detail: infrastructure hostnames, absolute paths from
the build machine, issue-tracker and quality-gate identifiers, and imports that
only resolve inside a private monorepo.

The point of scanning the *generated* corpus rather than the generator is that a
sanitiser is only as good as its last pattern. A page that slips through reads as
ordinary prose, so nothing downstream would ever notice.

## Development

### Regenerate the Corpus

```bash
python awkno/generate.py
```

The generator reads:
- `ecosystem.yaml` — The brick and stack registry
- `awknowledge/laws/*.md` — The 18 laws

And writes JSON to `awkno/pages/`.

### Test Locally

```bash
pip install -e .
pytest

# Or run the CLI directly
python -m awkno.cli awdk
```

### Build and Publish

```bash
pip install build
python -m build

# Publish to PyPI
twine upload dist/*
```

## Integration

### In Your Own Code

```python
from awkno import AwknoRegistry

registry = AwknoRegistry()
page = registry.get("awdk")
print(page.render())

# Search
results = registry.search("agent memory")
for page, score in results[:5]:
    print(f"{page.topic}: {page.synopsis}")

# List by category
bricks = registry.list_by_category("brick")
laws = registry.list_by_category("law")
```

### As a Dependency

awkno has zero runtime dependencies (PyYAML is dev-only, for corpus generation).

```toml
[project]
dependencies = [
    "awkno",
]
```

## Contributing

Read a law, apply it, send a pull request. The package itself is small and well-documented.

Pages are generated from `ecosystem.yaml` and law files — edits to those files flow into awkno on the next generation.

## License

Apache 2.0. See [LICENSE](LICENSE).

## Further Reading

- Ecosystem registry: https://github.com/Aitherium/ecosystem
- Laws and codex: https://github.com/Aitherium/awskills
- AitherWorld reference: https://aitherium.com

---

**awkno** — read the principles once, apply them everywhere.

<!-- aither-ecosystem:start GENERATED from the ecosystem registry. Edits here are overwritten; change the registry instead. -->

## The aw family

Standalone tools that share one idea: **replace something you would otherwise have to _trust_ with something you can _check_.**

Each installs on its own, works offline, and needs no account.

| | instead of trusting | you check |
|---|---|---|
| [awdk](https://github.com/Aitherium/awdk) | a framework's idea of how your agents should run | one loop you can read, pointed at a backend you already pay for |
| [awskills](https://github.com/Aitherium/awskills) | that an agent knows your procedure | the procedure written down, versioned, and loadable by any agent |
| [awm](https://github.com/Aitherium/awm) | that memory stayed in its lane | tenant:user:project scopes, so a write cannot cross a boundary |
| [awnode](https://github.com/Aitherium/awnode) | a vendor's cloud with every prompt | a local gateway routing to backends you chose |
| [awgraph](https://github.com/Aitherium/awgraph) | that grep found everything | an AST + tree-sitter call graph an agent can traverse |
| [awgit](https://github.com/Aitherium/awgit) | that no one else is editing this file | a lease, refused at commit time if you do not hold it |
| [awseal](https://github.com/Aitherium/awseal) | that the artifact came from who you think | an Ed25519 seal — the key that verifies is not the key that forges |
| [awshare](https://github.com/Aitherium/awshare) | that the download is intact | content-addressed bundles, verified on fetch |
| [awnest](https://github.com/Aitherium/awnest) | that there is a person on the other end | a verdict with evidence, where "we could not tell" is not "yes" |
| [awnboard](https://github.com/Aitherium/awnboard) | a share link anyone who sees it can use | an invitation addressed to one person, for one gate, revocable |
| [awnix](https://github.com/Aitherium/awnix) | that the box is what you left it as | an immutable image you built, with atomic rollback |
| [awrecover](https://github.com/Aitherium/awrecover) | that the restore worked | a restore that fully lands or does not land at all |
| [awrelay](https://github.com/Aitherium/awrelay) | a SaaS in the middle of your agents | findings, alerts and coordination over your own transport |
| [awmail](https://github.com/Aitherium/awmail) | a mailbox somebody else can read | mail your agents send and receive over your own server |
| [awfind](https://github.com/Aitherium/awfind) | one vendor's idea of the web | results from whichever providers you configured |
| [awbrowse](https://github.com/Aitherium/awbrowse) | that the page said what you were told | the render, the DOM and the requests it made |
| [aitherkvcache](https://github.com/Aitherium/aitherkvcache) | a vendor's quantisation defaults | sub-byte KV cache kernels you can benchmark yourself |
| [AitherZero](https://github.com/Aitherium/AitherZero) | a pile of scripts nobody has numbered | numbered, discoverable automation with declarative playbooks |
| [AitherConnect](https://github.com/Aitherium/AitherConnect) | what a page tells your browser to do | a federated search and desktop bridge you host |
| [awreason](https://github.com/Aitherium/awreason) | a confident paragraph | the phases it went through, and every tool call it made to get there |
| [awrecurse](https://github.com/Aitherium/awrecurse) | that everything you pasted in was actually read | which slices it opened, and what it concluded from each |
| [awprism](https://github.com/Aitherium/awprism) | the first explanation that fits | the ranked alternatives, and the observation that separates them |
| [awrepl](https://github.com/Aitherium/awrepl) | what the agent believes the value is | the value, printed from the live session |
| [awresearch](https://github.com/Aitherium/awresearch) | a summary of pages nobody opened | every claim against the source it came from |
| [awpredict](https://github.com/Aitherium/awpredict) | a model because it trained without erroring | its prediction against a self-updating lookup, on the rows that are actually novel |
| **awkno** _(you are here)_ | that the docs site is up, or that you remember the family | the whole ecosystem in your terminal, with no network at all |

[**awnix**](https://github.com/Aitherium/awnix) is the ground floor — A Linux you can hand to an agent — immutable base, capabilities included.

## The Aitherium ecosystem

Every repository here is public. Each publishes an `aither-manifest.json` beside its page, so any surface can read every sibling's — the network is browsable from any node in it.

| repo | what it is | pages |
|---|---|---|
| [awdk](https://github.com/Aitherium/awdk) | Build AI agent fleets — 3 lines, any backend, local or cloud | [docs](https://aitherium.github.io/awdk/) |
| [awskills](https://github.com/Aitherium/awskills) | Portable agent skills — self-contained procedures an agent loads on demand | [docs](https://aitherium.github.io/awskills/) |
| [awm](https://github.com/Aitherium/awm) | A portable, scoped agent memory | [docs](https://aitherium.github.io/awm/) |
| [awnode](https://github.com/Aitherium/awnode) | A lightweight local gateway — bridges your apps to the AI backends you chose | [docs](https://aitherium.github.io/awnode/) |
| [awrun](https://github.com/Aitherium/awrun) | A priority-aware queue and dispatcher for agentic runs and ad-hoc CI builds | [docs](https://aitherium.github.io/awrun/) |
| [awgraph](https://github.com/Aitherium/awgraph) | A semantic code graph for agents — AST + tree-sitter, call graphs | [docs](https://aitherium.github.io/awgraph/) |
| [awgit](https://github.com/Aitherium/awgit) | Semantic version control on top of git — edit-ops and leases | [docs](https://aitherium.github.io/awgit/) |
| [awseal](https://github.com/Aitherium/awseal) | Sign an artifact so a stranger can verify it | [docs](https://aitherium.github.io/awseal/) |
| [awshare](https://github.com/Aitherium/awshare) | Publish an artifact and fetch it back verified | [docs](https://aitherium.github.io/awshare/) |
| [awdit](https://github.com/Aitherium/awdit) | An append-only audit trail whose gaps are DETECTABLE | [docs](https://aitherium.github.io/awdit/) |
| [awbac](https://github.com/Aitherium/awbac) | Role-based access control that fails closed and explains itself | [docs](https://aitherium.github.io/awbac/) |
| [awiam](https://github.com/Aitherium/awiam) | Who is this caller? A directory and session store that fails honestly | [docs](https://aitherium.github.io/awiam/) |
| [awtunnel](https://github.com/Aitherium/awtunnel) | Reach a service that has no public address | [docs](https://aitherium.github.io/awtunnel/) |
| [awnest](https://github.com/Aitherium/awnest) | Prove there is a human before you let them into the nest | [docs](https://aitherium.github.io/awnest/) |
| [awnboard](https://github.com/Aitherium/awnboard) | A front gate you can put in front of anything, and hand someone the key to | [docs](https://aitherium.github.io/awnboard/) |
| [awnix](https://github.com/Aitherium/awnix) | A Linux you can hand to an agent — immutable base, capabilities included | [docs](https://aitherium.github.io/awnix/) |
| [awrecover](https://github.com/Aitherium/awrecover) | Labelled snapshots with an all-or-nothing restore | [docs](https://aitherium.github.io/awrecover/) |
| [awrelay](https://github.com/Aitherium/awrelay) | Portable agent messaging — findings, alerts, coordination | [docs](https://aitherium.github.io/awrelay/) |
| [awmail](https://github.com/Aitherium/awmail) | Give an agent an email address — send, and actually receive | [docs](https://aitherium.github.io/awmail/) |
| [awnet](https://github.com/Aitherium/awnet) | The agentic web — agents host a mesh, and agents join one | [docs](https://aitherium.github.io/awnet/) |
| [awfind](https://github.com/Aitherium/awfind) | A portable search client — query, results, ranking | [docs](https://aitherium.github.io/awfind/) |
| [awbrowse](https://github.com/Aitherium/awbrowse) | A portable browser client — navigate, console, network, DOM, screenshot | [docs](https://aitherium.github.io/awbrowse/) |
| [awknowledge](https://github.com/Aitherium/awknowledge) | How to run a coding agent so the result survives — the laws, with evidence | [docs](https://aitherium.github.io/awknowledge/) |
| [aitherkvcache](https://github.com/Aitherium/aitherkvcache) | Near-optimal KV cache quantization for LLM inference — sub-byte compression | [docs](https://aitherium.github.io/aitherkvcache/) |
| [AitherZero](https://github.com/Aitherium/AitherZero) | PowerShell 7+ automation framework — numbered, self-describing scripts | [docs](https://aitherium.github.io/AitherZero/) |
| [AitherConnect](https://github.com/Aitherium/AitherConnect) | Browser extension — federated AI search, page context, and the Living OS overlay | [docs](https://aitherium.github.io/AitherConnect/) |
| [awreason](https://github.com/Aitherium/awreason) | A portable reasoning client — sessions, phases, thoughts, and the chain that produced the answer | [docs](https://aitherium.github.io/awreason/) |
| [awrecurse](https://github.com/Aitherium/awrecurse) | Answer a question over a context far larger than the window — recursively, with the trace kept | [docs](https://aitherium.github.io/awrecurse/) |
| [awprism](https://github.com/Aitherium/awprism) | Turn a failure into ranked hypotheses — and say what would confirm each one | [docs](https://aitherium.github.io/awprism/) |
| [awrepl](https://github.com/Aitherium/awrepl) | A REPL an agent can actually use — state that survives between turns | [docs](https://aitherium.github.io/awrepl/) |
| [awresearch](https://github.com/Aitherium/awresearch) | Ask a research question, get a cited report you can check | [docs](https://aitherium.github.io/awresearch/) |
| [awpredict](https://github.com/Aitherium/awpredict) | Predict what your environment does next, and how surprised you were | [docs](https://aitherium.github.io/awpredict/) |
| **awkno** _(you are here)_ | The man page for the Aither World — every brick, stack and law, offline | [docs](https://aitherium.github.io/awkno/) |

<!-- aither-ecosystem:end -->
