Agent GUIs
Project description
AgentInterface
Agents shape UI. Not templates.
Agent GUIs without ceremony.
pip install agentinterface
Pattern
Agent text → Shaper LLM → Component JSON → React UI
Wrap any agent. Any LLM selects components. React renders UI.
Usage
from agentinterface import ai
def sales_agent(query: str) -> str:
return "Q3 revenue: $2M, up 15%. Users: 10K."
enhanced = ai(sales_agent, llm="gemini")
text, components = await enhanced("Show Q3 dashboard")
# Returns:
# text: "Q3 revenue: $2M, up 15%. Users: 10K."
# components: [{"type": "card", "data": {"title": "Q3 Revenue", "value": "$2M"}}]
Works with sync, async, streaming agents.
LLM Providers
# String providers (defaults: gpt-4.1-mini, gemini-2.5-flash, claude-4.5-sonnet-latest)
ai(agent, llm="openai")
ai(agent, llm="gemini")
ai(agent, llm="anthropic")
# Custom models
from agentinterface.llms import OpenAI, Gemini, Anthropic
ai(agent, llm=OpenAI(model="gpt-4o"))
ai(agent, llm=Gemini(model="gemini-pro"))
# Custom LLM
from agentinterface.llms import LLM
class CustomLLM(LLM):
async def generate(self, prompt: str) -> str:
...
ai(agent, llm=CustomLLM())
Composition
# Vertical stack
[card1, card2, card3]
# Horizontal grid
[[card1, card2, card3]]
# Mixed layout
[
card1, # Full width
[card2, card3], # Side by side
table1 # Full width
]
Nested arrays = horizontal. Arrays = vertical.
Bidirectional Callbacks
from agentinterface.callback import Http
callback = Http()
enhanced = ai(agent, llm="gemini", callback=callback)
async for event in enhanced("Show sales dashboard"):
if event["type"] == "component":
components = event["data"]["components"]
# User clicks → callback receives interaction
interaction = await callback.await_interaction(timeout=300)
# Agent continues based on interaction
Components talk back to agent. Conversational UI.
Custom Components
Create React component with metadata:
// src/ai/metric.tsx
export const Metric = ({ label, value, change }) => (
<div>
<span>{label}</span>
<strong>{value}</strong>
<span>{change}</span>
</div>
);
export const metadata = {
type: 'metric',
description: 'Key performance metric with change indicator',
schema: {
type: 'object',
properties: {
label: { type: 'string' },
value: { type: 'string' },
change: { type: 'string', optional: true }
},
required: ['label', 'value']
},
category: 'content'
};
Run autodiscovery:
npx agentinterface discover
Component automatically available to shaper LLM.
Built-in Components
10 components: card table timeline accordion tabs markdown image embed citation suggestions
API
ai(agent, llm, components=None, callback=None, timeout=300)
protocol(components=None)
shape(text, context, llm)
Docs
Full documentation: github.com/iteebz/agentinterface
License
MIT
Project details
Release history Release notifications | RSS feed
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 agentinterface-1.0.0.tar.gz.
File metadata
- Download URL: agentinterface-1.0.0.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.10 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10d75e9b1c55751ca3dde278914083fd5d1b7dae4be0948eabbd0639cc7e05f8
|
|
| MD5 |
8097ee53b98f709410561b8e05296b99
|
|
| BLAKE2b-256 |
260ebee53efe408661aab8677ce0e24beeff5901b6a659853fce1379e1719358
|
File details
Details for the file agentinterface-1.0.0-py3-none-any.whl.
File metadata
- Download URL: agentinterface-1.0.0-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.10 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43cb8e43c6b3b65e98507a381739908d6b781bb1a017bb494e848152b29baa14
|
|
| MD5 |
c757b2feb24bce091a0330ed183b2cd8
|
|
| BLAKE2b-256 |
62a44dc3f4dbfdf43d13e2071caacbbbd0286f8e5eaf56338cb738993203bb2c
|