Skip to main content

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.

Open http://127.0.0.1:8001/

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

Download files

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

Source Distribution

furatena-0.1.1.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

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

furatena-0.1.1-py3-none-any.whl (2.5 MB view details)

Uploaded Python 3

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

Hashes for furatena-0.1.1.tar.gz
Algorithm Hash digest
SHA256 fffb8fde6ccbd423bd6b688f22ee946b27ef34eccad3f68eb47dd8dbe7f550bd
MD5 8d7eb04a8b930d03d10e1af09ac0f5e2
BLAKE2b-256 dc58f046cf1cd42cbd2898e1f2abf0da766533e213f98324c603dd43f96f2ae2

See more details on using hashes here.

Provenance

The following attestation bundles were made for furatena-0.1.1.tar.gz:

Publisher: python-publish.yml on lbliii/furatena

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

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

Hashes for furatena-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3ae24ae6429faf90604aec8bc090aed34e17c5351579824924edb960b0388f2e
MD5 e8a277ac75d9b04274147797108f2727
BLAKE2b-256 0c9698f72d0b6d7d8e47a9b4caf010f5e16cdf446ca78b75fc88c68a743dd456

See more details on using hashes here.

Provenance

The following attestation bundles were made for furatena-0.1.1-py3-none-any.whl:

Publisher: python-publish.yml on lbliii/furatena

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