Tilo
Turn any LLM into an interactive UI. One line of Python — no React, no frontend setup.
pip install "tilo[openai]"
import tilo
spec = tilo.generate(
"Review this SaaS contract for payment, liability, and IP risks.",
model="gpt-4o", # or claude-opus-4-8 — provider auto-detected
)
tilo.view(spec) # opens in your browser. that's it.
The LLM doesn't return a wall of text — it generates a structured, interactive surface: a risk chart, a before/after diff, a checklist, a human-approval gate, and a memory card, organised into tabs. Rendered with zero frontend setup.
No API key? Run
tilo demoto open a sample surface.tilo servethen openhttp://localhost:8000/playgroundfor a live editor.
Works with your stack
# OpenAI
from tilo.adapters.openai import generate_aip_spec
spec = generate_aip_spec(OpenAI(), "Analyse Q3 pipeline", skill="sales_dashboard")
# Anthropic
from tilo.adapters.anthropic_sdk import generate_aip_spec
spec = generate_aip_spec(Anthropic(), "Review this PR", skill="code_review")
# LangChain / LangGraph
from tilo.adapters.langchain import generate_aip_spec
spec = generate_aip_spec(ChatOpenAI(model="gpt-4o"), "Plan a trip to Tokyo")
# Bring your own LLM client
from tilo.prompt import AIPPromptBuilder
b = AIPPromptBuilder("Summarise this incident", skill="incident_response")
# b.system_prompt(), b.user_prompt() → your LLM → b.parse(response)
Render anywhere
| Browser | tilo.view(spec) |
| Jupyter / Colab | tilo.notebook(spec) |
| Standalone HTML | tilo.save_html(spec, "out.html") |
| Production React | npm install @adam2go/tilo-react |
Install options
pip install "tilo[openai]" # OpenAI SDK
pip install "tilo[anthropic]" # Anthropic SDK
pip install "tilo[langchain]" # LangChain
pip install "tilo[all]" # everything + Postgres driver
Why Tilo
As LLMs get stronger, a wall of text is still a wall of text. Tilo turns model output into something a human can click, edit, approve, and reject — and turns those actions into structured signal the model can learn from.
- Structured UI beats prose for decisions.
- Human confirmation is infrastructure — stronger models need more gates, not fewer.
- Confirmed memory, not auto-memory — Tilo proposes; the human confirms.
Links
- GitHub: https://github.com/adam2go/tilo-framework
- Docs: https://github.com/adam2go/tilo-framework/tree/main/docs
- 5-min quickstart: https://github.com/adam2go/tilo-framework/blob/main/docs/tutorials/quickstart.md
- React renderer: https://www.npmjs.com/package/@adam2go/tilo-react
MIT License
Release files for tilo 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tilo-0.4.1.tar.gz | 198.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tilo-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:401.1 kB
Release files / tilo-0.4.1.tar.gz
| Download URL | tilo-0.4.1.tar.gz |
|---|---|
| Size | 198.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a7608c4c766ec8932878723749cd3d0bbceb21abac5ac4f5c3f286a55377567
|
|
BLAKE2b-256 checksum How to use checksums |
060addace0d5a13020a4c0a17cc67b7de3b4c7c85eafec049e977619082be5f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 10, 2026.
Transparency logRelease files / tilo-0.4.1-py3-none-any.whl
| Download URL | tilo-0.4.1-py3-none-any.whl |
|---|---|
| Size | 202.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4c4fbc072796a718c0445010d861af1d0a95e9aff3eac68121ad20ecb7e72318
|
|
BLAKE2b-256 checksum How to use checksums |
0d4a8144e898ae387ecd1a94817218a0d41e1acd449ef4a523c76bf83f097e27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 10, 2026.
Transparency log