agenturm 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agenturm-0.1.4/LICENSE +21 -0
- agenturm-0.1.4/PKG-INFO +175 -0
- agenturm-0.1.4/README.md +136 -0
- agenturm-0.1.4/agenturm.egg-info/PKG-INFO +175 -0
- agenturm-0.1.4/agenturm.egg-info/SOURCES.txt +84 -0
- agenturm-0.1.4/agenturm.egg-info/dependency_links.txt +1 -0
- agenturm-0.1.4/agenturm.egg-info/entry_points.txt +4 -0
- agenturm-0.1.4/agenturm.egg-info/requires.txt +14 -0
- agenturm-0.1.4/agenturm.egg-info/top_level.txt +1 -0
- agenturm-0.1.4/observatory/__init__.py +5 -0
- agenturm-0.1.4/observatory/__main__.py +98 -0
- agenturm-0.1.4/observatory/ai_summary.py +152 -0
- agenturm-0.1.4/observatory/auto.py +212 -0
- agenturm-0.1.4/observatory/branding.py +43 -0
- agenturm-0.1.4/observatory/client.py +253 -0
- agenturm-0.1.4/observatory/core.py +2560 -0
- agenturm-0.1.4/observatory/feed_requests.py +65 -0
- agenturm-0.1.4/observatory/findings.py +210 -0
- agenturm-0.1.4/observatory/integrations/__init__.py +1 -0
- agenturm-0.1.4/observatory/integrations/langchain.py +234 -0
- agenturm-0.1.4/observatory/integrations/openai_agents.py +186 -0
- agenturm-0.1.4/observatory/local_activity.py +296 -0
- agenturm-0.1.4/observatory/local_agents.py +960 -0
- agenturm-0.1.4/observatory/local_runtime.py +127 -0
- agenturm-0.1.4/observatory/local_state.py +86 -0
- agenturm-0.1.4/observatory/logs.py +329 -0
- agenturm-0.1.4/observatory/metrics.py +305 -0
- agenturm-0.1.4/observatory/native_json.py +29 -0
- agenturm-0.1.4/observatory/opencode.py +829 -0
- agenturm-0.1.4/observatory/otlp_proto.py +210 -0
- agenturm-0.1.4/observatory/receiver.py +163 -0
- agenturm-0.1.4/observatory/server.py +360 -0
- agenturm-0.1.4/observatory/session_status.py +54 -0
- agenturm-0.1.4/observatory/shutdown.py +30 -0
- agenturm-0.1.4/observatory/storage_derived.py +399 -0
- agenturm-0.1.4/observatory/terminal.py +574 -0
- agenturm-0.1.4/observatory/terminal_ui.py +2629 -0
- agenturm-0.1.4/observatory/themes.py +111 -0
- agenturm-0.1.4/observatory/ui_coverage.py +14 -0
- agenturm-0.1.4/observatory/ui_diagnostics.py +80 -0
- agenturm-0.1.4/observatory/ui_export.py +102 -0
- agenturm-0.1.4/observatory/ui_layout.py +39 -0
- agenturm-0.1.4/observatory/ui_preferences.py +64 -0
- agenturm-0.1.4/observatory/ui_render.py +11 -0
- agenturm-0.1.4/observatory/watch.py +107 -0
- agenturm-0.1.4/pyproject.toml +58 -0
- agenturm-0.1.4/setup.cfg +4 -0
- agenturm-0.1.4/tests/test_ai_summary.py +87 -0
- agenturm-0.1.4/tests/test_analysis_coverage.py +17 -0
- agenturm-0.1.4/tests/test_app_benchmark.py +10 -0
- agenturm-0.1.4/tests/test_auto_launcher_e2e.py +138 -0
- agenturm-0.1.4/tests/test_brand_media.py +67 -0
- agenturm-0.1.4/tests/test_export_coverage.py +40 -0
- agenturm-0.1.4/tests/test_feed_concurrency.py +150 -0
- agenturm-0.1.4/tests/test_google_adk_otel_e2e.py +234 -0
- agenturm-0.1.4/tests/test_javascript_client_e2e.py +125 -0
- agenturm-0.1.4/tests/test_langchain_callback_e2e.py +131 -0
- agenturm-0.1.4/tests/test_local_ingestion_limits.py +134 -0
- agenturm-0.1.4/tests/test_local_runtime.py +72 -0
- agenturm-0.1.4/tests/test_native_reader_budgets.py +366 -0
- agenturm-0.1.4/tests/test_native_sessions.py +391 -0
- agenturm-0.1.4/tests/test_observation_deck.py +524 -0
- agenturm-0.1.4/tests/test_observatory.py +1401 -0
- agenturm-0.1.4/tests/test_openai_agents_export_e2e.py +180 -0
- agenturm-0.1.4/tests/test_opencode.py +422 -0
- agenturm-0.1.4/tests/test_otel_export_e2e.py +239 -0
- agenturm-0.1.4/tests/test_pydantic_ai_otel_e2e.py +141 -0
- agenturm-0.1.4/tests/test_receiver_limits.py +166 -0
- agenturm-0.1.4/tests/test_resource_usage.py +70 -0
- agenturm-0.1.4/tests/test_session_status.py +64 -0
- agenturm-0.1.4/tests/test_session_view.py +391 -0
- agenturm-0.1.4/tests/test_shutdown.py +238 -0
- agenturm-0.1.4/tests/test_snapshot_unknown_usage.py +21 -0
- agenturm-0.1.4/tests/test_statistics_storage_budget.py +18 -0
- agenturm-0.1.4/tests/test_storage_derived.py +321 -0
- agenturm-0.1.4/tests/test_storage_receiver_hardening.py +179 -0
- agenturm-0.1.4/tests/test_summary_coverage.py +16 -0
- agenturm-0.1.4/tests/test_summary_scope.py +28 -0
- agenturm-0.1.4/tests/test_terminal_branding.py +165 -0
- agenturm-0.1.4/tests/test_terminal_only.py +48 -0
- agenturm-0.1.4/tests/test_terminal_review.py +162 -0
- agenturm-0.1.4/tests/test_terminal_search.py +553 -0
- agenturm-0.1.4/tests/test_terminal_themes.py +55 -0
- agenturm-0.1.4/tests/test_terminal_usability.py +326 -0
- agenturm-0.1.4/tests/test_ui_review_polish.py +217 -0
- agenturm-0.1.4/tests/test_ui_status_budget.py +20 -0
agenturm-0.1.4/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 abhishekash
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
agenturm-0.1.4/PKG-INFO
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agenturm
|
|
3
|
+
Version: 0.1.4
|
|
4
|
+
Summary: Terminal-first monitor for AI agent sessions, MCP calls, OpenTelemetry traces, and errors.
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://github.com/abhishekash/agenturm
|
|
7
|
+
Project-URL: Documentation, https://github.com/abhishekash/agenturm/blob/main/docs/usage.md
|
|
8
|
+
Project-URL: Repository, https://github.com/abhishekash/agenturm
|
|
9
|
+
Project-URL: Issues, https://github.com/abhishekash/agenturm/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/abhishekash/agenturm/releases
|
|
11
|
+
Keywords: agents,observability,opentelemetry,otlp,tracing,mcp,codex,claude-code
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Framework :: AsyncIO
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
|
+
Classifier: Topic :: Software Development :: Debuggers
|
|
23
|
+
Classifier: Topic :: System :: Monitoring
|
|
24
|
+
Requires-Python: >=3.11
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: textual<9,>=8.2
|
|
28
|
+
Provides-Extra: auto
|
|
29
|
+
Requires-Dist: opentelemetry-sdk<2,>=1.27; extra == "auto"
|
|
30
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.27; extra == "auto"
|
|
31
|
+
Requires-Dist: openinference-instrumentation-openai>=0.1; extra == "auto"
|
|
32
|
+
Requires-Dist: openinference-instrumentation-anthropic>=0.1; extra == "auto"
|
|
33
|
+
Requires-Dist: openinference-instrumentation-langchain>=0.1; extra == "auto"
|
|
34
|
+
Provides-Extra: langchain
|
|
35
|
+
Requires-Dist: langchain-core<2,>=0.3.9; extra == "langchain"
|
|
36
|
+
Provides-Extra: openai-agents
|
|
37
|
+
Requires-Dist: openai-agents<2,>=0.1.0; extra == "openai-agents"
|
|
38
|
+
Dynamic: license-file
|
|
39
|
+
|
|
40
|
+
<p align="center">
|
|
41
|
+
<a href="https://www.agenturm.dev/">
|
|
42
|
+
<img src="media/brand/hero.svg" alt="Agenturm tower-and-lens logo and the headline: Know what your agents are doing. Local observability for Codex, Claude Code, OpenCode, Pi, and OpenTelemetry agents." width="100%">
|
|
43
|
+
</a>
|
|
44
|
+
</p>
|
|
45
|
+
|
|
46
|
+
<p align="center">
|
|
47
|
+
<strong>Follow Codex, Claude Code, OpenCode, and Pi from one terminal.</strong><br>
|
|
48
|
+
See recorded progress, inspect tool calls, and find what needs your attention.
|
|
49
|
+
</p>
|
|
50
|
+
|
|
51
|
+
<p align="center">
|
|
52
|
+
<a href="https://www.agenturm.dev/#demo"><strong>Try the interactive demo →</strong></a> ·
|
|
53
|
+
<a href="docs/usage.md">Documentation</a> ·
|
|
54
|
+
<a href="docs/privacy.md">Privacy boundaries</a>
|
|
55
|
+
</p>
|
|
56
|
+
|
|
57
|
+
<p align="center">
|
|
58
|
+
<a href="https://github.com/abhishekash/agenturm/actions/workflows/ci.yml"><img src="https://github.com/abhishekash/agenturm/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI"></a>
|
|
59
|
+
<a href="https://www.agenturm.dev/"><img src="https://img.shields.io/badge/interface-terminal-ffbd69?labelColor=191621" alt="Terminal interface"></a>
|
|
60
|
+
<a href="docs/privacy.md"><img src="https://img.shields.io/badge/data-local_by_default-c5adff?labelColor=191621" alt="Local by default"></a>
|
|
61
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-b9afc5?labelColor=191621" alt="MIT license"></a>
|
|
62
|
+
</p>
|
|
63
|
+
|
|
64
|
+
## The view from your terminal
|
|
65
|
+
|
|
66
|
+
<p align="center">
|
|
67
|
+
<a href="https://www.agenturm.dev/#terminal">
|
|
68
|
+
<img src="media/agenturm-terminal.png" alt="Actual Agenturm terminal showing three synthetic agent sessions, recorded status, recent work, and the selected session's progress." width="100%">
|
|
69
|
+
</a>
|
|
70
|
+
</p>
|
|
71
|
+
|
|
72
|
+
<p align="center"><sub>Actual terminal UI · synthetic example records · <a href="docs/investigation-video.md">Watch the walkthrough</a></sub></p>
|
|
73
|
+
|
|
74
|
+
## Start here. Stay in your terminal.
|
|
75
|
+
|
|
76
|
+
Requires **Python 3.11+**, Git, and [uv](https://docs.astral.sh/uv/getting-started/installation/).
|
|
77
|
+
|
|
78
|
+
On macOS or Linux, install and launch:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
curl -fsSL https://www.agenturm.dev/install.sh | bash
|
|
82
|
+
agenturm
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
[Review the installer](https://www.agenturm.dev/install.sh) before running it. On Windows—or if you prefer to install with uv directly:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
uv tool install --force git+https://github.com/abhishekash/agenturm
|
|
89
|
+
agenturm
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Or try it once without installing the command:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
uvx --from git+https://github.com/abhishekash/agenturm agenturm
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Find what needs your attention
|
|
99
|
+
|
|
100
|
+
Start with your recent supported agent sessions. Select a record, inspect the evidence, and follow its trace—all in a keyboard-first terminal interface.
|
|
101
|
+
|
|
102
|
+
| Start with… | Then inspect… |
|
|
103
|
+
| --- | --- |
|
|
104
|
+
| **Agents** — sessions, projects, status, and last update | A session's task, recorded progress, current work, and reported waits |
|
|
105
|
+
| **Activity** — what happened in a session | Recorded prompts, messages, shell commands, file changes, and errors |
|
|
106
|
+
| **MCP calls** — tools and servers | Arguments, responses, failures, duration, and linked execution |
|
|
107
|
+
| **Traces** — how a run fits together | Parent and child operations, model usage, and errors |
|
|
108
|
+
| **Host and metrics** — runtime and reported usage | Known local processes, host details, and recorded OTLP metrics |
|
|
109
|
+
|
|
110
|
+
Recent supported Codex, Claude Code, OpenCode, and Pi records are discovered locally—without restarting your agents. Other supported tools can send telemetry through OpenTelemetry to the local receiver.
|
|
111
|
+
|
|
112
|
+
Agenturm is a monitor, not a controller. Reply to agents and approve requests in their own terminals.
|
|
113
|
+
|
|
114
|
+
### Keyboard first
|
|
115
|
+
|
|
116
|
+
| Key | Action |
|
|
117
|
+
| --- | --- |
|
|
118
|
+
| `1`–`7` | Switch views |
|
|
119
|
+
| `↑` / `↓`, `Enter` | Select and inspect a record |
|
|
120
|
+
| `/` | Search the current view |
|
|
121
|
+
| `e` | Expand details |
|
|
122
|
+
| `t` | Follow the linked trace |
|
|
123
|
+
| `Esc` / `Alt+←` | Return or navigate back |
|
|
124
|
+
| `c` | Copy details |
|
|
125
|
+
| `d` | Open collection diagnostics |
|
|
126
|
+
| `x` | Preview and export selected evidence |
|
|
127
|
+
| `q` | Quit |
|
|
128
|
+
|
|
129
|
+
### Four terminal themes
|
|
130
|
+
|
|
131
|
+
Press **Ctrl+P → Theme** to choose **Current** (Alpine Ember), **Bright**, **Dark**, or **Solarized**. The selected palette carries through panels, tables, controls, and evidence inspectors.
|
|
132
|
+
|
|
133
|
+
## Local by default
|
|
134
|
+
|
|
135
|
+
Supported records and telemetry are stored in local SQLite. The built-in receiver listens on `127.0.0.1:14318`. **Local monitoring and recorded-progress summaries need no account or API key.**
|
|
136
|
+
|
|
137
|
+
Captured messages, commands, and tool results can contain sensitive project information. Recognizable credentials are redacted on a best-effort basis. Use `--metadata-only` to omit native session text, commands, and outputs from future ingestion. [Read what is collected and where it goes](docs/privacy.md).
|
|
138
|
+
|
|
139
|
+
Recorded-progress summaries work locally. Optional AI summaries call your configured provider only when explicitly requested. The documented session evidence can include task and action text; review [AI summary setup and data](docs/usage.md#optional-ai-summaries) before enabling one.
|
|
140
|
+
|
|
141
|
+
## Integrations and documentation
|
|
142
|
+
|
|
143
|
+
- [Complete usage guide](docs/usage.md) — installation, local discovery, keyboard shortcuts, and troubleshooting.
|
|
144
|
+
- [Integrations guide](docs/frameworks.md) — Pydantic AI, Google ADK, Gemini CLI, and other OTLP agents.
|
|
145
|
+
- [Python integrations and automatic SDK capture](docs/python.md)
|
|
146
|
+
- [JavaScript client](docs/javascript.md)
|
|
147
|
+
- [Receiver and OTLP configuration](docs/receiver.md)
|
|
148
|
+
- [Resource budgets and benchmarking](docs/performance.md)
|
|
149
|
+
- [Capture and privacy boundaries](docs/privacy.md)
|
|
150
|
+
- [Brand and terminal themes](docs/branding.md)
|
|
151
|
+
|
|
152
|
+
For conversational queries over recorded MCP executions, see [SpanHound](https://github.com/abhishekash/spanhound), the companion MCP tool.
|
|
153
|
+
|
|
154
|
+
## Develop
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
git clone https://github.com/abhishekash/agenturm.git
|
|
158
|
+
cd agenturm
|
|
159
|
+
uv sync
|
|
160
|
+
uv run agenturm
|
|
161
|
+
uv run python -m unittest discover -s tests -v
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development and demo production. [Issues](https://github.com/abhishekash/agenturm/issues) and focused pull requests with clear reproductions are welcome.
|
|
165
|
+
|
|
166
|
+
<details>
|
|
167
|
+
<summary>Upgrading from Agent Observatory</summary>
|
|
168
|
+
|
|
169
|
+
Agenturm is the new name. Install from this repository to get the `agenturm` command. Existing Python imports (`observatory`), `OBSERVATORY_*` settings, telemetry keys, and `observatory.db` history continue to work. The previous command is retained as an alias. The source install above works independently of PyPI publication.
|
|
170
|
+
|
|
171
|
+
</details>
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
**Agenturm** is open source under the [MIT license](LICENSE). Read more at [agenturm.dev](https://www.agenturm.dev/).
|
agenturm-0.1.4/README.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://www.agenturm.dev/">
|
|
3
|
+
<img src="media/brand/hero.svg" alt="Agenturm tower-and-lens logo and the headline: Know what your agents are doing. Local observability for Codex, Claude Code, OpenCode, Pi, and OpenTelemetry agents." width="100%">
|
|
4
|
+
</a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>Follow Codex, Claude Code, OpenCode, and Pi from one terminal.</strong><br>
|
|
9
|
+
See recorded progress, inspect tool calls, and find what needs your attention.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://www.agenturm.dev/#demo"><strong>Try the interactive demo →</strong></a> ·
|
|
14
|
+
<a href="docs/usage.md">Documentation</a> ·
|
|
15
|
+
<a href="docs/privacy.md">Privacy boundaries</a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="https://github.com/abhishekash/agenturm/actions/workflows/ci.yml"><img src="https://github.com/abhishekash/agenturm/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI"></a>
|
|
20
|
+
<a href="https://www.agenturm.dev/"><img src="https://img.shields.io/badge/interface-terminal-ffbd69?labelColor=191621" alt="Terminal interface"></a>
|
|
21
|
+
<a href="docs/privacy.md"><img src="https://img.shields.io/badge/data-local_by_default-c5adff?labelColor=191621" alt="Local by default"></a>
|
|
22
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-b9afc5?labelColor=191621" alt="MIT license"></a>
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
## The view from your terminal
|
|
26
|
+
|
|
27
|
+
<p align="center">
|
|
28
|
+
<a href="https://www.agenturm.dev/#terminal">
|
|
29
|
+
<img src="media/agenturm-terminal.png" alt="Actual Agenturm terminal showing three synthetic agent sessions, recorded status, recent work, and the selected session's progress." width="100%">
|
|
30
|
+
</a>
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
<p align="center"><sub>Actual terminal UI · synthetic example records · <a href="docs/investigation-video.md">Watch the walkthrough</a></sub></p>
|
|
34
|
+
|
|
35
|
+
## Start here. Stay in your terminal.
|
|
36
|
+
|
|
37
|
+
Requires **Python 3.11+**, Git, and [uv](https://docs.astral.sh/uv/getting-started/installation/).
|
|
38
|
+
|
|
39
|
+
On macOS or Linux, install and launch:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
curl -fsSL https://www.agenturm.dev/install.sh | bash
|
|
43
|
+
agenturm
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
[Review the installer](https://www.agenturm.dev/install.sh) before running it. On Windows—or if you prefer to install with uv directly:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
uv tool install --force git+https://github.com/abhishekash/agenturm
|
|
50
|
+
agenturm
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Or try it once without installing the command:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
uvx --from git+https://github.com/abhishekash/agenturm agenturm
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Find what needs your attention
|
|
60
|
+
|
|
61
|
+
Start with your recent supported agent sessions. Select a record, inspect the evidence, and follow its trace—all in a keyboard-first terminal interface.
|
|
62
|
+
|
|
63
|
+
| Start with… | Then inspect… |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| **Agents** — sessions, projects, status, and last update | A session's task, recorded progress, current work, and reported waits |
|
|
66
|
+
| **Activity** — what happened in a session | Recorded prompts, messages, shell commands, file changes, and errors |
|
|
67
|
+
| **MCP calls** — tools and servers | Arguments, responses, failures, duration, and linked execution |
|
|
68
|
+
| **Traces** — how a run fits together | Parent and child operations, model usage, and errors |
|
|
69
|
+
| **Host and metrics** — runtime and reported usage | Known local processes, host details, and recorded OTLP metrics |
|
|
70
|
+
|
|
71
|
+
Recent supported Codex, Claude Code, OpenCode, and Pi records are discovered locally—without restarting your agents. Other supported tools can send telemetry through OpenTelemetry to the local receiver.
|
|
72
|
+
|
|
73
|
+
Agenturm is a monitor, not a controller. Reply to agents and approve requests in their own terminals.
|
|
74
|
+
|
|
75
|
+
### Keyboard first
|
|
76
|
+
|
|
77
|
+
| Key | Action |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| `1`–`7` | Switch views |
|
|
80
|
+
| `↑` / `↓`, `Enter` | Select and inspect a record |
|
|
81
|
+
| `/` | Search the current view |
|
|
82
|
+
| `e` | Expand details |
|
|
83
|
+
| `t` | Follow the linked trace |
|
|
84
|
+
| `Esc` / `Alt+←` | Return or navigate back |
|
|
85
|
+
| `c` | Copy details |
|
|
86
|
+
| `d` | Open collection diagnostics |
|
|
87
|
+
| `x` | Preview and export selected evidence |
|
|
88
|
+
| `q` | Quit |
|
|
89
|
+
|
|
90
|
+
### Four terminal themes
|
|
91
|
+
|
|
92
|
+
Press **Ctrl+P → Theme** to choose **Current** (Alpine Ember), **Bright**, **Dark**, or **Solarized**. The selected palette carries through panels, tables, controls, and evidence inspectors.
|
|
93
|
+
|
|
94
|
+
## Local by default
|
|
95
|
+
|
|
96
|
+
Supported records and telemetry are stored in local SQLite. The built-in receiver listens on `127.0.0.1:14318`. **Local monitoring and recorded-progress summaries need no account or API key.**
|
|
97
|
+
|
|
98
|
+
Captured messages, commands, and tool results can contain sensitive project information. Recognizable credentials are redacted on a best-effort basis. Use `--metadata-only` to omit native session text, commands, and outputs from future ingestion. [Read what is collected and where it goes](docs/privacy.md).
|
|
99
|
+
|
|
100
|
+
Recorded-progress summaries work locally. Optional AI summaries call your configured provider only when explicitly requested. The documented session evidence can include task and action text; review [AI summary setup and data](docs/usage.md#optional-ai-summaries) before enabling one.
|
|
101
|
+
|
|
102
|
+
## Integrations and documentation
|
|
103
|
+
|
|
104
|
+
- [Complete usage guide](docs/usage.md) — installation, local discovery, keyboard shortcuts, and troubleshooting.
|
|
105
|
+
- [Integrations guide](docs/frameworks.md) — Pydantic AI, Google ADK, Gemini CLI, and other OTLP agents.
|
|
106
|
+
- [Python integrations and automatic SDK capture](docs/python.md)
|
|
107
|
+
- [JavaScript client](docs/javascript.md)
|
|
108
|
+
- [Receiver and OTLP configuration](docs/receiver.md)
|
|
109
|
+
- [Resource budgets and benchmarking](docs/performance.md)
|
|
110
|
+
- [Capture and privacy boundaries](docs/privacy.md)
|
|
111
|
+
- [Brand and terminal themes](docs/branding.md)
|
|
112
|
+
|
|
113
|
+
For conversational queries over recorded MCP executions, see [SpanHound](https://github.com/abhishekash/spanhound), the companion MCP tool.
|
|
114
|
+
|
|
115
|
+
## Develop
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
git clone https://github.com/abhishekash/agenturm.git
|
|
119
|
+
cd agenturm
|
|
120
|
+
uv sync
|
|
121
|
+
uv run agenturm
|
|
122
|
+
uv run python -m unittest discover -s tests -v
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development and demo production. [Issues](https://github.com/abhishekash/agenturm/issues) and focused pull requests with clear reproductions are welcome.
|
|
126
|
+
|
|
127
|
+
<details>
|
|
128
|
+
<summary>Upgrading from Agent Observatory</summary>
|
|
129
|
+
|
|
130
|
+
Agenturm is the new name. Install from this repository to get the `agenturm` command. Existing Python imports (`observatory`), `OBSERVATORY_*` settings, telemetry keys, and `observatory.db` history continue to work. The previous command is retained as an alias. The source install above works independently of PyPI publication.
|
|
131
|
+
|
|
132
|
+
</details>
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
**Agenturm** is open source under the [MIT license](LICENSE). Read more at [agenturm.dev](https://www.agenturm.dev/).
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agenturm
|
|
3
|
+
Version: 0.1.4
|
|
4
|
+
Summary: Terminal-first monitor for AI agent sessions, MCP calls, OpenTelemetry traces, and errors.
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://github.com/abhishekash/agenturm
|
|
7
|
+
Project-URL: Documentation, https://github.com/abhishekash/agenturm/blob/main/docs/usage.md
|
|
8
|
+
Project-URL: Repository, https://github.com/abhishekash/agenturm
|
|
9
|
+
Project-URL: Issues, https://github.com/abhishekash/agenturm/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/abhishekash/agenturm/releases
|
|
11
|
+
Keywords: agents,observability,opentelemetry,otlp,tracing,mcp,codex,claude-code
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Framework :: AsyncIO
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
|
+
Classifier: Topic :: Software Development :: Debuggers
|
|
23
|
+
Classifier: Topic :: System :: Monitoring
|
|
24
|
+
Requires-Python: >=3.11
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: textual<9,>=8.2
|
|
28
|
+
Provides-Extra: auto
|
|
29
|
+
Requires-Dist: opentelemetry-sdk<2,>=1.27; extra == "auto"
|
|
30
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.27; extra == "auto"
|
|
31
|
+
Requires-Dist: openinference-instrumentation-openai>=0.1; extra == "auto"
|
|
32
|
+
Requires-Dist: openinference-instrumentation-anthropic>=0.1; extra == "auto"
|
|
33
|
+
Requires-Dist: openinference-instrumentation-langchain>=0.1; extra == "auto"
|
|
34
|
+
Provides-Extra: langchain
|
|
35
|
+
Requires-Dist: langchain-core<2,>=0.3.9; extra == "langchain"
|
|
36
|
+
Provides-Extra: openai-agents
|
|
37
|
+
Requires-Dist: openai-agents<2,>=0.1.0; extra == "openai-agents"
|
|
38
|
+
Dynamic: license-file
|
|
39
|
+
|
|
40
|
+
<p align="center">
|
|
41
|
+
<a href="https://www.agenturm.dev/">
|
|
42
|
+
<img src="media/brand/hero.svg" alt="Agenturm tower-and-lens logo and the headline: Know what your agents are doing. Local observability for Codex, Claude Code, OpenCode, Pi, and OpenTelemetry agents." width="100%">
|
|
43
|
+
</a>
|
|
44
|
+
</p>
|
|
45
|
+
|
|
46
|
+
<p align="center">
|
|
47
|
+
<strong>Follow Codex, Claude Code, OpenCode, and Pi from one terminal.</strong><br>
|
|
48
|
+
See recorded progress, inspect tool calls, and find what needs your attention.
|
|
49
|
+
</p>
|
|
50
|
+
|
|
51
|
+
<p align="center">
|
|
52
|
+
<a href="https://www.agenturm.dev/#demo"><strong>Try the interactive demo →</strong></a> ·
|
|
53
|
+
<a href="docs/usage.md">Documentation</a> ·
|
|
54
|
+
<a href="docs/privacy.md">Privacy boundaries</a>
|
|
55
|
+
</p>
|
|
56
|
+
|
|
57
|
+
<p align="center">
|
|
58
|
+
<a href="https://github.com/abhishekash/agenturm/actions/workflows/ci.yml"><img src="https://github.com/abhishekash/agenturm/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI"></a>
|
|
59
|
+
<a href="https://www.agenturm.dev/"><img src="https://img.shields.io/badge/interface-terminal-ffbd69?labelColor=191621" alt="Terminal interface"></a>
|
|
60
|
+
<a href="docs/privacy.md"><img src="https://img.shields.io/badge/data-local_by_default-c5adff?labelColor=191621" alt="Local by default"></a>
|
|
61
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-b9afc5?labelColor=191621" alt="MIT license"></a>
|
|
62
|
+
</p>
|
|
63
|
+
|
|
64
|
+
## The view from your terminal
|
|
65
|
+
|
|
66
|
+
<p align="center">
|
|
67
|
+
<a href="https://www.agenturm.dev/#terminal">
|
|
68
|
+
<img src="media/agenturm-terminal.png" alt="Actual Agenturm terminal showing three synthetic agent sessions, recorded status, recent work, and the selected session's progress." width="100%">
|
|
69
|
+
</a>
|
|
70
|
+
</p>
|
|
71
|
+
|
|
72
|
+
<p align="center"><sub>Actual terminal UI · synthetic example records · <a href="docs/investigation-video.md">Watch the walkthrough</a></sub></p>
|
|
73
|
+
|
|
74
|
+
## Start here. Stay in your terminal.
|
|
75
|
+
|
|
76
|
+
Requires **Python 3.11+**, Git, and [uv](https://docs.astral.sh/uv/getting-started/installation/).
|
|
77
|
+
|
|
78
|
+
On macOS or Linux, install and launch:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
curl -fsSL https://www.agenturm.dev/install.sh | bash
|
|
82
|
+
agenturm
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
[Review the installer](https://www.agenturm.dev/install.sh) before running it. On Windows—or if you prefer to install with uv directly:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
uv tool install --force git+https://github.com/abhishekash/agenturm
|
|
89
|
+
agenturm
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Or try it once without installing the command:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
uvx --from git+https://github.com/abhishekash/agenturm agenturm
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Find what needs your attention
|
|
99
|
+
|
|
100
|
+
Start with your recent supported agent sessions. Select a record, inspect the evidence, and follow its trace—all in a keyboard-first terminal interface.
|
|
101
|
+
|
|
102
|
+
| Start with… | Then inspect… |
|
|
103
|
+
| --- | --- |
|
|
104
|
+
| **Agents** — sessions, projects, status, and last update | A session's task, recorded progress, current work, and reported waits |
|
|
105
|
+
| **Activity** — what happened in a session | Recorded prompts, messages, shell commands, file changes, and errors |
|
|
106
|
+
| **MCP calls** — tools and servers | Arguments, responses, failures, duration, and linked execution |
|
|
107
|
+
| **Traces** — how a run fits together | Parent and child operations, model usage, and errors |
|
|
108
|
+
| **Host and metrics** — runtime and reported usage | Known local processes, host details, and recorded OTLP metrics |
|
|
109
|
+
|
|
110
|
+
Recent supported Codex, Claude Code, OpenCode, and Pi records are discovered locally—without restarting your agents. Other supported tools can send telemetry through OpenTelemetry to the local receiver.
|
|
111
|
+
|
|
112
|
+
Agenturm is a monitor, not a controller. Reply to agents and approve requests in their own terminals.
|
|
113
|
+
|
|
114
|
+
### Keyboard first
|
|
115
|
+
|
|
116
|
+
| Key | Action |
|
|
117
|
+
| --- | --- |
|
|
118
|
+
| `1`–`7` | Switch views |
|
|
119
|
+
| `↑` / `↓`, `Enter` | Select and inspect a record |
|
|
120
|
+
| `/` | Search the current view |
|
|
121
|
+
| `e` | Expand details |
|
|
122
|
+
| `t` | Follow the linked trace |
|
|
123
|
+
| `Esc` / `Alt+←` | Return or navigate back |
|
|
124
|
+
| `c` | Copy details |
|
|
125
|
+
| `d` | Open collection diagnostics |
|
|
126
|
+
| `x` | Preview and export selected evidence |
|
|
127
|
+
| `q` | Quit |
|
|
128
|
+
|
|
129
|
+
### Four terminal themes
|
|
130
|
+
|
|
131
|
+
Press **Ctrl+P → Theme** to choose **Current** (Alpine Ember), **Bright**, **Dark**, or **Solarized**. The selected palette carries through panels, tables, controls, and evidence inspectors.
|
|
132
|
+
|
|
133
|
+
## Local by default
|
|
134
|
+
|
|
135
|
+
Supported records and telemetry are stored in local SQLite. The built-in receiver listens on `127.0.0.1:14318`. **Local monitoring and recorded-progress summaries need no account or API key.**
|
|
136
|
+
|
|
137
|
+
Captured messages, commands, and tool results can contain sensitive project information. Recognizable credentials are redacted on a best-effort basis. Use `--metadata-only` to omit native session text, commands, and outputs from future ingestion. [Read what is collected and where it goes](docs/privacy.md).
|
|
138
|
+
|
|
139
|
+
Recorded-progress summaries work locally. Optional AI summaries call your configured provider only when explicitly requested. The documented session evidence can include task and action text; review [AI summary setup and data](docs/usage.md#optional-ai-summaries) before enabling one.
|
|
140
|
+
|
|
141
|
+
## Integrations and documentation
|
|
142
|
+
|
|
143
|
+
- [Complete usage guide](docs/usage.md) — installation, local discovery, keyboard shortcuts, and troubleshooting.
|
|
144
|
+
- [Integrations guide](docs/frameworks.md) — Pydantic AI, Google ADK, Gemini CLI, and other OTLP agents.
|
|
145
|
+
- [Python integrations and automatic SDK capture](docs/python.md)
|
|
146
|
+
- [JavaScript client](docs/javascript.md)
|
|
147
|
+
- [Receiver and OTLP configuration](docs/receiver.md)
|
|
148
|
+
- [Resource budgets and benchmarking](docs/performance.md)
|
|
149
|
+
- [Capture and privacy boundaries](docs/privacy.md)
|
|
150
|
+
- [Brand and terminal themes](docs/branding.md)
|
|
151
|
+
|
|
152
|
+
For conversational queries over recorded MCP executions, see [SpanHound](https://github.com/abhishekash/spanhound), the companion MCP tool.
|
|
153
|
+
|
|
154
|
+
## Develop
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
git clone https://github.com/abhishekash/agenturm.git
|
|
158
|
+
cd agenturm
|
|
159
|
+
uv sync
|
|
160
|
+
uv run agenturm
|
|
161
|
+
uv run python -m unittest discover -s tests -v
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development and demo production. [Issues](https://github.com/abhishekash/agenturm/issues) and focused pull requests with clear reproductions are welcome.
|
|
165
|
+
|
|
166
|
+
<details>
|
|
167
|
+
<summary>Upgrading from Agent Observatory</summary>
|
|
168
|
+
|
|
169
|
+
Agenturm is the new name. Install from this repository to get the `agenturm` command. Existing Python imports (`observatory`), `OBSERVATORY_*` settings, telemetry keys, and `observatory.db` history continue to work. The previous command is retained as an alias. The source install above works independently of PyPI publication.
|
|
170
|
+
|
|
171
|
+
</details>
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
**Agenturm** is open source under the [MIT license](LICENSE). Read more at [agenturm.dev](https://www.agenturm.dev/).
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
agenturm.egg-info/PKG-INFO
|
|
5
|
+
agenturm.egg-info/SOURCES.txt
|
|
6
|
+
agenturm.egg-info/dependency_links.txt
|
|
7
|
+
agenturm.egg-info/entry_points.txt
|
|
8
|
+
agenturm.egg-info/requires.txt
|
|
9
|
+
agenturm.egg-info/top_level.txt
|
|
10
|
+
observatory/__init__.py
|
|
11
|
+
observatory/__main__.py
|
|
12
|
+
observatory/ai_summary.py
|
|
13
|
+
observatory/auto.py
|
|
14
|
+
observatory/branding.py
|
|
15
|
+
observatory/client.py
|
|
16
|
+
observatory/core.py
|
|
17
|
+
observatory/feed_requests.py
|
|
18
|
+
observatory/findings.py
|
|
19
|
+
observatory/local_activity.py
|
|
20
|
+
observatory/local_agents.py
|
|
21
|
+
observatory/local_runtime.py
|
|
22
|
+
observatory/local_state.py
|
|
23
|
+
observatory/logs.py
|
|
24
|
+
observatory/metrics.py
|
|
25
|
+
observatory/native_json.py
|
|
26
|
+
observatory/opencode.py
|
|
27
|
+
observatory/otlp_proto.py
|
|
28
|
+
observatory/receiver.py
|
|
29
|
+
observatory/server.py
|
|
30
|
+
observatory/session_status.py
|
|
31
|
+
observatory/shutdown.py
|
|
32
|
+
observatory/storage_derived.py
|
|
33
|
+
observatory/terminal.py
|
|
34
|
+
observatory/terminal_ui.py
|
|
35
|
+
observatory/themes.py
|
|
36
|
+
observatory/ui_coverage.py
|
|
37
|
+
observatory/ui_diagnostics.py
|
|
38
|
+
observatory/ui_export.py
|
|
39
|
+
observatory/ui_layout.py
|
|
40
|
+
observatory/ui_preferences.py
|
|
41
|
+
observatory/ui_render.py
|
|
42
|
+
observatory/watch.py
|
|
43
|
+
observatory/integrations/__init__.py
|
|
44
|
+
observatory/integrations/langchain.py
|
|
45
|
+
observatory/integrations/openai_agents.py
|
|
46
|
+
tests/test_ai_summary.py
|
|
47
|
+
tests/test_analysis_coverage.py
|
|
48
|
+
tests/test_app_benchmark.py
|
|
49
|
+
tests/test_auto_launcher_e2e.py
|
|
50
|
+
tests/test_brand_media.py
|
|
51
|
+
tests/test_export_coverage.py
|
|
52
|
+
tests/test_feed_concurrency.py
|
|
53
|
+
tests/test_google_adk_otel_e2e.py
|
|
54
|
+
tests/test_javascript_client_e2e.py
|
|
55
|
+
tests/test_langchain_callback_e2e.py
|
|
56
|
+
tests/test_local_ingestion_limits.py
|
|
57
|
+
tests/test_local_runtime.py
|
|
58
|
+
tests/test_native_reader_budgets.py
|
|
59
|
+
tests/test_native_sessions.py
|
|
60
|
+
tests/test_observation_deck.py
|
|
61
|
+
tests/test_observatory.py
|
|
62
|
+
tests/test_openai_agents_export_e2e.py
|
|
63
|
+
tests/test_opencode.py
|
|
64
|
+
tests/test_otel_export_e2e.py
|
|
65
|
+
tests/test_pydantic_ai_otel_e2e.py
|
|
66
|
+
tests/test_receiver_limits.py
|
|
67
|
+
tests/test_resource_usage.py
|
|
68
|
+
tests/test_session_status.py
|
|
69
|
+
tests/test_session_view.py
|
|
70
|
+
tests/test_shutdown.py
|
|
71
|
+
tests/test_snapshot_unknown_usage.py
|
|
72
|
+
tests/test_statistics_storage_budget.py
|
|
73
|
+
tests/test_storage_derived.py
|
|
74
|
+
tests/test_storage_receiver_hardening.py
|
|
75
|
+
tests/test_summary_coverage.py
|
|
76
|
+
tests/test_summary_scope.py
|
|
77
|
+
tests/test_terminal_branding.py
|
|
78
|
+
tests/test_terminal_only.py
|
|
79
|
+
tests/test_terminal_review.py
|
|
80
|
+
tests/test_terminal_search.py
|
|
81
|
+
tests/test_terminal_themes.py
|
|
82
|
+
tests/test_terminal_usability.py
|
|
83
|
+
tests/test_ui_review_polish.py
|
|
84
|
+
tests/test_ui_status_budget.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
textual<9,>=8.2
|
|
2
|
+
|
|
3
|
+
[auto]
|
|
4
|
+
opentelemetry-sdk<2,>=1.27
|
|
5
|
+
opentelemetry-exporter-otlp-proto-http<2,>=1.27
|
|
6
|
+
openinference-instrumentation-openai>=0.1
|
|
7
|
+
openinference-instrumentation-anthropic>=0.1
|
|
8
|
+
openinference-instrumentation-langchain>=0.1
|
|
9
|
+
|
|
10
|
+
[langchain]
|
|
11
|
+
langchain-core<2,>=0.3.9
|
|
12
|
+
|
|
13
|
+
[openai-agents]
|
|
14
|
+
openai-agents<2,>=0.1.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
observatory
|