Hypermedia documentation catalog for Chirp — live graph, dual IR, fura CLI
Project description
Furatena — live documentation from markdown
Furatena turns markdown into a documentation site that updates as you edit — with built-in search, navigation, static export, and agent-readable catalog data from the same corpus.
The CLI is fura (short for Furatena).
Under the hood: markdown is indexed into a queryable graph and served as hypermedia
fragments (htmx) inside a persistent shell — no static rebuild loop, no client framework.
Export to GitHub Pages or feed /catalog.json to agents from the same corpus.
Quick start
From a checkout:
uv sync --group dev
uv run fura init /tmp/my-docs --name "My Docs"
uv run fura --app-root /tmp/my-docs check --content-only
uv run fura --app-root /tmp/my-docs serve
After the package is published to PyPI (PYPI.md):
pip install furatena
# or: uv tool install furatena
fura init ./my-docs --name "My Docs"
fura --app-root ./my-docs serve
uv run fura serve is the canonical zero-install command from a checkout. uv sync
installs fura into the project environment, but does not place a bare fura command
on your global shell path. make serve and ./app/run are convenience launchers for
the same CLI path.
To opt into a bare, globally available command backed by this checkout:
uv tool install --editable .
fura --help
fura serve
If the install reports that the uv tool directory is missing from PATH, run
uv tool update-shell, restart the shell, and retry fura --help. Use
uv tool dir --bin to inspect the executable directory.
The default app/ instance dogfoods the Furatena documentation corpus under content/furatena/.
Commands
uv run fura serve # hybrid when app/frozen/ exists
uv run fura init ./docs-site # scaffold a standalone docs app
uv run fura serve --author # force live index
uv run fura freeze # catalog IR + HTML + assets → app/frozen/
uv run fura export # static HTML → app/public/
uv run fura check # Chirp contracts + corpus lint
uv run fura query --directive tabs
uv run fura migrate --dry-run # preview MDX → Patitas markdown lowering
uv run fura recipes --json # stable agent workflow recipes
uv run fura mcp --describe --json
uv run fura author status docs/get-started --json
Contributor and CI validation use the same risk-based Make targets. See CI lanes for dependencies, scope, and expected runtimes.
Layout
app/ Default deployment (docs.yaml, theme, mounts)
content/ Markdown corpora (content/furatena = default; content/chirp = test fixture)
data/ Collections, glossary, rewrites
config/ Autodoc and shared config
src/furatena/ Library (catalog graph, directives, CLI)
docs/ Furatena design notes (Dual IR, views, roadmap)
tests/ Catalog and runtime tests
Naming
- Furatena — the product (from the Muzo legend of Fura and Tena)
- Fura — CLI and shorthand
- Itoco — internal name for the catalog graph (optional vocabulary)
Chirp dependency
Furatena depends on the released bengal-chirp package from PyPI. The supported
runtime line is pinned in pyproject.toml (>=0.9.0,<0.10.0) so a fresh
uv sync --group dev does not depend on any local Chirp checkout.
The production server boundary is also pinned directly to
bengal-pounce>=0.9.2,<0.10.0 so deploys retain structured readiness JSON
during listener drain and complete large buffered responses under downstream
backpressure.
Docs
- Dual IR
- Editions and immutable release shards
- Views
- Authoring lifecycle
- Author mutation threat model
- Agent workflows
- Agent-readiness score operations
- CLI contract
- HTTP QUERY prototype
- htmx 4 preview report
- Pull-request preview contract
- Hosted preview broker architecture
- Hosted preview broker threat model
- Railway proprietary template architecture
- Live SLOs and no-SSH operations
- Compatibility and support policy
- Open-source distribution decision
- PyPI publishing
- Release and incident runbook
- CI lanes
- Roadmap
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 furatena-0.1.1.tar.gz.
File metadata
- Download URL: furatena-0.1.1.tar.gz
- Upload date:
- Size: 2.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fffb8fde6ccbd423bd6b688f22ee946b27ef34eccad3f68eb47dd8dbe7f550bd
|
|
| MD5 |
8d7eb04a8b930d03d10e1af09ac0f5e2
|
|
| BLAKE2b-256 |
dc58f046cf1cd42cbd2898e1f2abf0da766533e213f98324c603dd43f96f2ae2
|
Provenance
The following attestation bundles were made for furatena-0.1.1.tar.gz:
Publisher:
python-publish.yml on lbliii/furatena
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
furatena-0.1.1.tar.gz -
Subject digest:
fffb8fde6ccbd423bd6b688f22ee946b27ef34eccad3f68eb47dd8dbe7f550bd - Sigstore transparency entry: 2346475940
- Sigstore integration time:
-
Permalink:
lbliii/furatena@ee7fa608f832b00668ee73fcab2560e06b3afd7c -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/lbliii
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@ee7fa608f832b00668ee73fcab2560e06b3afd7c -
Trigger Event:
release
-
Statement type:
File details
Details for the file furatena-0.1.1-py3-none-any.whl.
File metadata
- Download URL: furatena-0.1.1-py3-none-any.whl
- Upload date:
- Size: 2.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ae24ae6429faf90604aec8bc090aed34e17c5351579824924edb960b0388f2e
|
|
| MD5 |
e8a277ac75d9b04274147797108f2727
|
|
| BLAKE2b-256 |
0c9698f72d0b6d7d8e47a9b4caf010f5e16cdf446ca78b75fc88c68a743dd456
|
Provenance
The following attestation bundles were made for furatena-0.1.1-py3-none-any.whl:
Publisher:
python-publish.yml on lbliii/furatena
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
furatena-0.1.1-py3-none-any.whl -
Subject digest:
3ae24ae6429faf90604aec8bc090aed34e17c5351579824924edb960b0388f2e - Sigstore transparency entry: 2346476054
- Sigstore integration time:
-
Permalink:
lbliii/furatena@ee7fa608f832b00668ee73fcab2560e06b3afd7c -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/lbliii
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@ee7fa608f832b00668ee73fcab2560e06b3afd7c -
Trigger Event:
release
-
Statement type: