Observed since 20 Oct, 23:13 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agentrr-ui
Visual stepper UI for agentrr record-and-replay
Local web UI for agentrr — list saved agent runs, read a plain-language timeline, and step through replay to see if behavior still matches the recording.
Requires: Python 3.11+, agentrr>=0.1.0a2 (installed automatically).
pip install agentrr-ui
This pulls in agentrr, FastAPI, and uvicorn. No Node.js required for end users — the frontend is bundled in the wheel.
In your project, instrument with agentrr and record using a module entrypoint (so replay can import your code):
pip install agentrr
export PYTHONPATH=src # or wherever your agents package lives
python -m your_app.agents.support # example
# writes: .agentrr/runs/your_app-<id>.jsonl
Use python -m package.module, not a bare script path (python foo.py), so the log stores a stable entrypoint.
export PYTHONPATH=src # same path as when you recorded
export AGENTRR_LOG_DIR=.agentrr/runs # optional; this is the default
agentrr-ui
| Variable | Default | Purpose |
|---|---|---|
AGENTRR_LOG_DIR | .agentrr/runs | Directory containing *.jsonl run logs |
AGENTRR_UI_HOST | 127.0.0.1 | Bind address |
AGENTRR_UI_PORT | 8765 | Bind port |
Example — custom log directory:
export AGENTRR_LOG_DIR=/var/lib/agentrr/runs
agentrr-ui
Always start the app with the agentrr-ui command. Do not serve the static files with python -m http.server — that has no /api routes and the UI will break.
| Symptom | Fix |
|---|---|
| Empty session list | Record a run first, or set AGENTRR_LOG_DIR to where your .jsonl files live |
| Refresh shows HTML 404 | Wrong process on port 8765. Run lsof -i :8765, stop any http.server, use agentrr-ui |
| Replay hangs or errors | Set PYTHONPATH so replay can import your agent module; re-record with python -m … |
| "Next" does nothing | Restart agentrr-ui after upgrading; each step can take several seconds |
Replay executes your agent's real Python entrypoint — arbitrary code execution by design.
127.0.0.1 only (localhost).Run agentrr-ui on the same host, bound to localhost. Put nginx in front for HTTPS and password protection:
server {
listen 443 ssl;
server_name agentrr.example.com;
ssl_certificate /etc/ssl/certs/agentrr.crt;
ssl_certificate_key /etc/ssl/private/agentrr.key;
auth_basic "agentrr";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:8765;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Create credentials:
htpasswd -c /etc/nginx/.htpasswd youruser
Reload nginx. Users hit https://agentrr.example.com; the app stays on 127.0.0.1:8765.
git clone https://github.com/ip174/agentrr.git
cd agentrr
uv sync --group dev
cd packages/agentrr-ui/frontend && npm ci && npm run build
uv pip install -e . -e packages/agentrr-ui
export PYTHONPATH=examples
agentrr-ui
Apache-2.0
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
agentrrEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | agentrr>=0.1.0a2 | runtime |
fastapiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | fastapi>=0.115 | runtime |
uvicornEnvironment{
"extras": "standard",
"marker": null,
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | uvicorn[standard]>=0.32 | runtime |
websocketsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | websockets>=13.0 | runtime |
bdist_wheel · 92.56 KB · Python py3
sdist · 89.23 KB · Python source
Observed since 20 Oct, 23:13 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:551da506eb3b4e17e1fa6c46e8a27735387c7cd509251d682ed319c114e8d0c3