Skip to main content

Typed Python builders + single-file HTML renderer for a2ui v0.9 surfaces. palin- (again) + nexus (bond) — surfaces get rewritten.

Project description

palinex

palin- (Greek, "again") + nexus (Latin, "bond") — surfaces get rewritten.

A small library + reference renderer for a2ui v0.9 surfaces. Each updateComponents and updateDataModel rewrites what came before; the rendering surface is the bond that the agent revises in place.

What's in here

  • src/palinex/ — Python package. Typed builders that emit v0.9-conformant payloads from native Python; structural validation built in, optional jsonschema deep validation via pip install palinex[validate]. Also ships an MCP server (python -m palinex.mcp) and an HTTP sidecar (palinex serve).
  • web/index.html — single-file HTML renderer. Open in a browser. Accepts v0.9 message envelopes via URL param, file picker, or postMessage. lit-html from CDN, no build step.
  • web/host-bridge.html — reference wrapper that embeds the renderer in an iframe and implements the a2ui.request / a2ui.response postMessage protocol. For hosts (Claude Code MCP UI resources, custom web shells) that bridge agent-side data sources to the renderer.
  • web/inspector.html — single-file Pyodide-loaded surface validator. Paste/drop/URL-load a payload; get structural validation, component table with role inference (root / child of X / template / orphan), data-path walker, and (opt-in) deep schema validation + markdown sidecar via palinex[validate] running in-browser.
  • plugin/ — Claude Code plugin (manifest + MCP server registration + skills + commands). Installable directly from the GitHub URL; auto-starts the palinex MCP server at Claude Code session boot.
  • A2UI-V09-DIVERGENCE.md — audit notes against the v0.9 spec; documents the structural choices the renderer and producer make.

Install

pip install palinex                  # builders only
pip install palinex[validate]        # + jsonschema for deep validation

Or clone for the renderer + host bridge:

git clone https://github.com/Hellblazer/palinex

Quick start

Renderer with the built-in demo:

open web/index.html?demo=1

Generate a payload from Python and pipe it in:

from palinex import Surface, DataPath

s = Surface(surface_id="demo", catalog_id="a2ui.basic.v0_9")
s.data["greeting"] = "Hello, surface."
body = s.column([
    s.text(path="/greeting", variant="h2"),
    s.divider(),
    s.button(s.text("Click me"), action=s.open_url("https://example.com")),
])
s.set_root(body)
print(s.to_json())               # v0.9 message-envelope payload
print(s.to_markdown())           # lossless markdown sidecar
s.validate()                     # structural pass

The hosted renderer at https://hellblazer.github.io/palinex/ accepts payloads via:

Param Effect
?surface=<url> Fetch payload JSON from URL
?payload=<base64> Decode inline payload (good for sharing)
?demo=1 Render the built-in demo

Component coverage

All 18 a2ui v0.9 Basic Catalog components: Text · Image · Icon · Video · AudioPlayer · Row · Column · List · Card · Tabs · Modal · Divider · Button · TextField · CheckBox · ChoicePicker · Slider · DateTimeInput.

License

Apache 2.0 — see LICENSE.

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

palinex-0.3.0.tar.gz (92.6 kB view details)

Uploaded Source

Built Distribution

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

palinex-0.3.0-py3-none-any.whl (22.2 kB view details)

Uploaded Python 3

File details

Details for the file palinex-0.3.0.tar.gz.

File metadata

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

File hashes

Hashes for palinex-0.3.0.tar.gz
Algorithm Hash digest
SHA256 ba4071d95340cb822cfa7a90fb6ef0930e54a77785903d1d5bcd89a6d5af1e75
MD5 fcb70471bf6c13f4b1a704a6db1cb2e3
BLAKE2b-256 cf0f63b311fd220fe52e4552f86cf79b6b5c3346660720467cb869179227f69c

See more details on using hashes here.

Provenance

The following attestation bundles were made for palinex-0.3.0.tar.gz:

Publisher: release.yml on Hellblazer/palinex

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

File details

Details for the file palinex-0.3.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for palinex-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6f28fd97969f5c42dbb90ec48c0389e7cc362d4b01309bdec1bba49e25f4fd04
MD5 92fc6e6fa8b3a1c2da2a08e261fd0603
BLAKE2b-256 f28277f66242397f6c0d678f778f5d5d989ec1ea16f5fdc5ed3113a0e324b638

See more details on using hashes here.

Provenance

The following attestation bundles were made for palinex-0.3.0-py3-none-any.whl:

Publisher: release.yml on Hellblazer/palinex

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