Turn any LLM into an interactive UI. One line of Python — no React, no frontend setup.
Project description
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
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
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 tilo-0.4.1.tar.gz.
File metadata
- Download URL: tilo-0.4.1.tar.gz
- Upload date:
- Size: 198.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a7608c4c766ec8932878723749cd3d0bbceb21abac5ac4f5c3f286a55377567
|
|
| MD5 |
753151efd3ebfa5ef24c296aa4431e22
|
|
| BLAKE2b-256 |
060addace0d5a13020a4c0a17cc67b7de3b4c7c85eafec049e977619082be5f4
|
Provenance
The following attestation bundles were made for tilo-0.4.1.tar.gz:
Publisher:
publish.yml on adam2go/tilo-framework
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tilo-0.4.1.tar.gz -
Subject digest:
2a7608c4c766ec8932878723749cd3d0bbceb21abac5ac4f5c3f286a55377567 - Sigstore transparency entry: 1773091440
- Sigstore integration time:
-
Permalink:
adam2go/tilo-framework@b44f9e5f7cf946a554fa4b79835e72301e596f32 -
Branch / Tag:
refs/tags/v0.4.1 - Owner: https://github.com/adam2go
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b44f9e5f7cf946a554fa4b79835e72301e596f32 -
Trigger Event:
push
-
Statement type:
File details
Details for the file tilo-0.4.1-py3-none-any.whl.
File metadata
- Download URL: tilo-0.4.1-py3-none-any.whl
- Upload date:
- Size: 202.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c4fbc072796a718c0445010d861af1d0a95e9aff3eac68121ad20ecb7e72318
|
|
| MD5 |
5486f1e45b4a5a92fe995914ee43c266
|
|
| BLAKE2b-256 |
0d4a8144e898ae387ecd1a94817218a0d41e1acd449ef4a523c76bf83f097e27
|
Provenance
The following attestation bundles were made for tilo-0.4.1-py3-none-any.whl:
Publisher:
publish.yml on adam2go/tilo-framework
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tilo-0.4.1-py3-none-any.whl -
Subject digest:
4c4fbc072796a718c0445010d861af1d0a95e9aff3eac68121ad20ecb7e72318 - Sigstore transparency entry: 1773091778
- Sigstore integration time:
-
Permalink:
adam2go/tilo-framework@b44f9e5f7cf946a554fa4b79835e72301e596f32 -
Branch / Tag:
refs/tags/v0.4.1 - Owner: https://github.com/adam2go
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b44f9e5f7cf946a554fa4b79835e72301e596f32 -
Trigger Event:
push
-
Statement type: