portalr is the portal into an application built on lattice: an app UI for the people who use it, to chat with its agents and see their artifacts, proposals, rules and runs, and an admin UI for those who run it, to manage access and see feedback, evaluations, usage and spend. Both are static single-page apps in React, sharing a typed client and a ui kit, and served by a router the application mounts beside the libraries'.
Status: built, and not yet released. The router, the app's areas and the admin UI, including the operators' tenants and tools and people shown by email, are built and tested, and stackr's template mounts it (guides, architecture). Not built yet: the scenarios against a generated application and the acceptance steps (phase 7b of the plan), magic links, and a control for colour-blind mode. It is not on PyPI: install its wheel.
Why
Every surface in lattice is an API, a WebSocket or an MCP server, so an application built on it has to build its own UI before anyone can use it, and running one is blind without an admin UI. lattice RFC-0002 designs that UI once, and portalr is where it is built.
What it does
- The browser calls each package's own routes. A chat goes to artifactr's WebSocket, a rule to reflexr's REST, a grant to grantr's API, on one origin with one token. Nothing proxies them, so nothing re-declares their types (ADR-0001).
- Two static apps on Vite, in React 19 and TanStack, with no server rendering and no Node server (ADR-0002).
- A chat of its own, thin, in
ui, over artifactr's protocol (ADR-0003). - A tenant's own observability, native, in the admin UI: its feedback, evaluations, spend, traces and logs, with deep links out to the tools for operators (ADR-0004, ADR-0005).
- Every read filtered by tenant, in one module, over the stack's shared stores (ADR-0006).
- Permissions asked, never guessed. The UIs ask grantr what the user may do, and the server checks each command again.
Documentation
portalr's documentation is its section of lattice's site, at https://lattice.alexnodeland.com/portalr/, built from docs/portalr/.
- Getting started: install the wheel, mount the router, sign in.
- Guides: the app, the admin UI, an operator's runbook, and what portalr keeps from view.
- Architecture decision records: why each part is the way it is.
- RFCs: the v0.1 plan, its phases and what each waits on.
- lattice RFC-0002: the design portalr builds.
- Brand: the marks and their colours.
Contributing
See CONTRIBUTING.md for setup, the trunk-based workflow, and the RFC and ADR process.
License
MIT. The UIs carry lattice's typefaces, Schibsted Grotesk and Fragment Mono, under the SIL Open Font License 1.1.
Metadata
Release files for portalr 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| portalr-0.1.0.tar.gz | 1.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| portalr-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.0 MB
Release files / portalr-0.1.0.tar.gz
| Download URL | portalr-0.1.0.tar.gz |
|---|---|
| Size | 1.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0e87c9746eaddfba9d352655364cb5e45e01a7baa63db694598bcd2f0b35619
|
|
BLAKE2b-256 checksum How to use checksums |
6ff23fc3a5c9c2449431c142c9d6a9dd3fd0aaf404e79f6ce893e8f2e01eff7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logRelease files / portalr-0.1.0-py3-none-any.whl
| Download URL | portalr-0.1.0-py3-none-any.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6afb206e8a531be394280648c9061f2886e95b300d98947e9f7d6e5202130fea
|
|
BLAKE2b-256 checksum How to use checksums |
799305ca3785752945d428daac5a21a9228aeccd7a8be4c4646395e90bdb67d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency log