claudon 0.2.0__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.
- claudon-0.2.0/LICENSE +21 -0
- claudon-0.2.0/PKG-INFO +187 -0
- claudon-0.2.0/README.md +165 -0
- claudon-0.2.0/claudon.egg-info/PKG-INFO +187 -0
- claudon-0.2.0/claudon.egg-info/SOURCES.txt +12 -0
- claudon-0.2.0/claudon.egg-info/dependency_links.txt +1 -0
- claudon-0.2.0/claudon.egg-info/entry_points.txt +2 -0
- claudon-0.2.0/claudon.egg-info/top_level.txt +1 -0
- claudon-0.2.0/claudon.py +711 -0
- claudon-0.2.0/pyproject.toml +42 -0
- claudon-0.2.0/setup.cfg +4 -0
- claudon-0.2.0/tests/test_claudon.py +285 -0
- claudon-0.2.0/tests/test_scripts.py +47 -0
- claudon-0.2.0/tests/test_ui.py +328 -0
claudon-0.2.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Infenia
|
|
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.
|
claudon-0.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: claudon
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Interactive session analytics & HTML dashboard for Claude Code
|
|
5
|
+
Author: Infenia Private Limited
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/infenia/claudon
|
|
8
|
+
Project-URL: Repository, https://github.com/infenia/claudon
|
|
9
|
+
Keywords: claude,claude-code,analytics,dashboard,anthropic,llm
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Classifier: Topic :: Software Development :: User Interfaces
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Dynamic: license-file
|
|
22
|
+
|
|
23
|
+
<div align="center">
|
|
24
|
+
|
|
25
|
+
# Claudon
|
|
26
|
+
|
|
27
|
+
**See where your Claude Code time and money actually go.**
|
|
28
|
+
|
|
29
|
+
One command turns your session logs into an interactive HTML dashboard.<br>
|
|
30
|
+
100% local ยท zero dependencies ยท nothing leaves your machine.
|
|
31
|
+
|
|
32
|
+
[](https://github.com/infenia/claudon/actions/workflows/ci.yml)
|
|
33
|
+
[](https://pypi.org/project/claudon/)
|
|
34
|
+
[](https://www.npmjs.com/package/claudon)
|
|
35
|
+
[](https://pypi.org/project/claudon/)
|
|
36
|
+
[](LICENSE)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
uvx claudon --open
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
<img src="docs/assets/overview.png" alt="Claudon dashboard overview: tasks, wall time, cost, time breakdown and per-project cost" width="860">
|
|
43
|
+
|
|
44
|
+
<sub>Demo data. Your own sessions stay on your machine.</sub>
|
|
45
|
+
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Why Claudon?
|
|
51
|
+
|
|
52
|
+
Claude Code is fast until it isn't. Which turn burned ten minutes? Was it the model, a slow tool, or you being away? Did that failing tool call loop? What did the session really cost? Your answers are already in `~/.claude`; Claudon reads them and shows you:
|
|
53
|
+
|
|
54
|
+
- **Where time went**: model vs. tools vs. permission waits vs. idle, per task, turn and subagent.
|
|
55
|
+
- **What it cost**: token usage ร list prices per model generation (override with `--pricing`).
|
|
56
|
+
- **What went wrong**: automatic detection of tool failures, slow turns and retry loops.
|
|
57
|
+
- **How hard it thought**: thinking time vs. thinking tokens.
|
|
58
|
+
- **Safe to share**: `--redact` strips prompts, paths, commands and project names.
|
|
59
|
+
|
|
60
|
+
It is a single Python file using only the standard library. No telemetry, no network, no account.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## ๐ Quick Start
|
|
65
|
+
|
|
66
|
+
Use whichever runner you already have; each downloads and runs the latest release on demand:
|
|
67
|
+
|
|
68
|
+
| Tool | Run once | Install globally |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| **uv** | `uvx claudon` | `uv tool install claudon` |
|
|
71
|
+
| **pipx** | `pipx run claudon` | `pipx install claudon` |
|
|
72
|
+
| **pip** | | `pip install claudon` |
|
|
73
|
+
| **npm** | `npx claudon` | `npm install -g claudon` |
|
|
74
|
+
| **pnpm** | `pnpm dlx claudon` | `pnpm add -g claudon` |
|
|
75
|
+
| **Yarn** (2+) | `yarn dlx claudon` | |
|
|
76
|
+
| **Bun** | `bunx claudon` | `bun add -g claudon` |
|
|
77
|
+
| **Shell script** | | [`install.sh`](#standalone-shell-script) |
|
|
78
|
+
| **Browser** | [WebAssembly page](#-webassembly-in-browser--zero-python) | no install |
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
claudon ~/.claude -o report.html --open # after a global install
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
> The npm-family packages (npx, pnpm, yarn, bun) are a thin launcher around the same Python script, so they need
|
|
85
|
+
> **Python 3.11+** on your `PATH` (`python3`, `python` or `py`). No Python at all? Use the browser version or a
|
|
86
|
+
> standalone binary from [GitHub Releases](https://github.com/infenia/claudon/releases).
|
|
87
|
+
> Use `@beta` / `uvx --prerelease allow` for pre-releases.
|
|
88
|
+
|
|
89
|
+
### Standalone Shell Script
|
|
90
|
+
```bash
|
|
91
|
+
curl -fsSL https://raw.githubusercontent.com/infenia/claudon/main/install.sh | sh
|
|
92
|
+
|
|
93
|
+
# recommended: pin a release (see GitHub Releases); claudon.py is checked against that release's SHA256SUMS
|
|
94
|
+
curl -fsSL https://raw.githubusercontent.com/infenia/claudon/main/install.sh | CLAUDON_VERSION=vX.Y.Z sh
|
|
95
|
+
```
|
|
96
|
+
The checksum catches corrupted or mismatched downloads. To also prove a release file was built by this repo's
|
|
97
|
+
workflow, download it and run `gh attestation verify claudon.py -R infenia/claudon`.
|
|
98
|
+
|
|
99
|
+
### Direct Clone
|
|
100
|
+
```bash
|
|
101
|
+
git clone https://github.com/infenia/claudon.git
|
|
102
|
+
cd claudon
|
|
103
|
+
python3 claudon.py ~/.claude -o report.html --open
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### โก WebAssembly (In-Browser / Zero Python)
|
|
107
|
+
Run Claudon entirely in your browser without local Python installed. The page loads `../claudon.py`,
|
|
108
|
+
so it has to be served over HTTP (opening the file directly via `file://` can't load it):
|
|
109
|
+
1. From the repository root run `python3 -m http.server` (or host the repo on any static server, e.g. GitHub Pages).
|
|
110
|
+
2. Open `http://localhost:8000/wasm/`.
|
|
111
|
+
3. Drop `.jsonl` transcripts, or use **Open Folder** on `~/.claude/projects` to keep project grouping and subagents.
|
|
112
|
+
|
|
113
|
+
**Nothing is uploaded.** Files are read by the browser and analyzed on your machine; the page's only network requests
|
|
114
|
+
download the Pyodide runtime (jsDelivr) and `claudon.py`, and once it shows *Ready* it keeps working offline. Chrome and
|
|
115
|
+
Edge ask to let the page *view* the folder. Browsers without that folder API (Firefox, Safari) show their own
|
|
116
|
+
"upload" prompt for folder pickers, which only grants the page read access.
|
|
117
|
+
|
|
118
|
+
### ๐ ๏ธ Native Binary (Nuitka)
|
|
119
|
+
To compile Claudon into a single native binary locally:
|
|
120
|
+
```bash
|
|
121
|
+
pip install nuitka==4.2.2 zstandard
|
|
122
|
+
python scripts/build_nuitka.py --onefile
|
|
123
|
+
```
|
|
124
|
+
Standalone executables are output to `dist/`.
|
|
125
|
+
|
|
126
|
+
### ๐ฆ Releases
|
|
127
|
+
Claudon follows **Semantic Versioning** and is released through an automated, reviewable pipeline: Conventional Commit PR titles drive an auto-generated release PR (version bump + [CHANGELOG](CHANGELOG.md)); merging it tags the release and publishes:
|
|
128
|
+
- **Nuitka Binaries**: Linux x86_64, macOS (arm64 and Intel) and Windows, attached to GitHub Releases with `SHA256SUMS` and build provenance attestations (`gh attestation verify <file> -R infenia/claudon`).
|
|
129
|
+
- **PyPI**: `uvx`, `pipx` or `pip` (trusted publishing).
|
|
130
|
+
- **npm**: `npx`, `pnpm dlx`, `yarn dlx` or `bunx` (with provenance).
|
|
131
|
+
|
|
132
|
+
Want pre-release builds? `uvx --prerelease allow claudon` or `npx claudon@beta`. Full process: [docs/RELEASING.md](docs/RELEASING.md).
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## โก Integration with Claude Code
|
|
137
|
+
|
|
138
|
+
Install Claudon as a native slash command inside Claude Code:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
claudon --install-plugin
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Once installed, simply type `/claudon` in any active Claude Code CLI session to instantly generate and open your analytics dashboard!
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## โ๏ธ Options & CLI Usage
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
claudon [PATH] [-o FILE] [--redact] [--pricing FILE] [--open] [--install-plugin [--force]] [--version]
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
`PATH` can be a `~/.claude` directory, its `projects/` subfolder, a specific project directory, or a single `.jsonl` transcript file (default: `$CLAUDE_CONFIG_DIR` if set, else `~/.claude`).
|
|
155
|
+
|
|
156
|
+
| Flag | Description |
|
|
157
|
+
|---|---|
|
|
158
|
+
| `-o FILE`, `--out FILE` | Output HTML report file path (default: `cc_report.html`) |
|
|
159
|
+
| `--redact` | Redact prompts, titles, project names, paths, commands, session IDs and MCP server names for safe report sharing |
|
|
160
|
+
| `--pricing FILE` | Custom $/MTok rates keyed by model-id substring (longest match wins): `{"claude-opus-4-1": [input, output, cache_read, write_5m, write_1h]}` |
|
|
161
|
+
| `--open` | Automatically open the generated HTML report in your default browser |
|
|
162
|
+
| `--install-plugin` | Register `/claudon` slash command in `<config dir>/commands/` |
|
|
163
|
+
| `--force` | With `--install-plugin`: overwrite a `claudon.md` you have edited (otherwise it is left alone) |
|
|
164
|
+
| `--version` | Print the version |
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## ๐ What's in the Report?
|
|
169
|
+
|
|
170
|
+
- **Task Breakdown**: each human prompt through to completion.
|
|
171
|
+
- **Turns & Subagents**: model API calls vs. agent delegation.
|
|
172
|
+
- **Time, Thinking & Cost**: the breakdowns described [above](#why-claudon).
|
|
173
|
+
- **Bottlenecks**: failures, slow turns and loops, surfaced automatically.
|
|
174
|
+
|
|
175
|
+
The report is one self-contained `.html` file: no server, no external assets, easy to attach to an issue (use `--redact`).
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## ๐ค Contributing
|
|
180
|
+
|
|
181
|
+
Contributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) (PR titles must be [Conventional Commits](https://www.conventionalcommits.org/)), follow the [Code of Conduct](CODE_OF_CONDUCT.md), and report vulnerabilities privately per [SECURITY.md](SECURITY.md). See the [CHANGELOG](CHANGELOG.md) for release history.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## ๐ License
|
|
186
|
+
|
|
187
|
+
Developed by **Infenia Private Limited**. MIT License. See [LICENSE](LICENSE) for details.
|
claudon-0.2.0/README.md
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# Claudon
|
|
4
|
+
|
|
5
|
+
**See where your Claude Code time and money actually go.**
|
|
6
|
+
|
|
7
|
+
One command turns your session logs into an interactive HTML dashboard.<br>
|
|
8
|
+
100% local ยท zero dependencies ยท nothing leaves your machine.
|
|
9
|
+
|
|
10
|
+
[](https://github.com/infenia/claudon/actions/workflows/ci.yml)
|
|
11
|
+
[](https://pypi.org/project/claudon/)
|
|
12
|
+
[](https://www.npmjs.com/package/claudon)
|
|
13
|
+
[](https://pypi.org/project/claudon/)
|
|
14
|
+
[](LICENSE)
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
uvx claudon --open
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
<img src="docs/assets/overview.png" alt="Claudon dashboard overview: tasks, wall time, cost, time breakdown and per-project cost" width="860">
|
|
21
|
+
|
|
22
|
+
<sub>Demo data. Your own sessions stay on your machine.</sub>
|
|
23
|
+
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Why Claudon?
|
|
29
|
+
|
|
30
|
+
Claude Code is fast until it isn't. Which turn burned ten minutes? Was it the model, a slow tool, or you being away? Did that failing tool call loop? What did the session really cost? Your answers are already in `~/.claude`; Claudon reads them and shows you:
|
|
31
|
+
|
|
32
|
+
- **Where time went**: model vs. tools vs. permission waits vs. idle, per task, turn and subagent.
|
|
33
|
+
- **What it cost**: token usage ร list prices per model generation (override with `--pricing`).
|
|
34
|
+
- **What went wrong**: automatic detection of tool failures, slow turns and retry loops.
|
|
35
|
+
- **How hard it thought**: thinking time vs. thinking tokens.
|
|
36
|
+
- **Safe to share**: `--redact` strips prompts, paths, commands and project names.
|
|
37
|
+
|
|
38
|
+
It is a single Python file using only the standard library. No telemetry, no network, no account.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## ๐ Quick Start
|
|
43
|
+
|
|
44
|
+
Use whichever runner you already have; each downloads and runs the latest release on demand:
|
|
45
|
+
|
|
46
|
+
| Tool | Run once | Install globally |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| **uv** | `uvx claudon` | `uv tool install claudon` |
|
|
49
|
+
| **pipx** | `pipx run claudon` | `pipx install claudon` |
|
|
50
|
+
| **pip** | | `pip install claudon` |
|
|
51
|
+
| **npm** | `npx claudon` | `npm install -g claudon` |
|
|
52
|
+
| **pnpm** | `pnpm dlx claudon` | `pnpm add -g claudon` |
|
|
53
|
+
| **Yarn** (2+) | `yarn dlx claudon` | |
|
|
54
|
+
| **Bun** | `bunx claudon` | `bun add -g claudon` |
|
|
55
|
+
| **Shell script** | | [`install.sh`](#standalone-shell-script) |
|
|
56
|
+
| **Browser** | [WebAssembly page](#-webassembly-in-browser--zero-python) | no install |
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
claudon ~/.claude -o report.html --open # after a global install
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
> The npm-family packages (npx, pnpm, yarn, bun) are a thin launcher around the same Python script, so they need
|
|
63
|
+
> **Python 3.11+** on your `PATH` (`python3`, `python` or `py`). No Python at all? Use the browser version or a
|
|
64
|
+
> standalone binary from [GitHub Releases](https://github.com/infenia/claudon/releases).
|
|
65
|
+
> Use `@beta` / `uvx --prerelease allow` for pre-releases.
|
|
66
|
+
|
|
67
|
+
### Standalone Shell Script
|
|
68
|
+
```bash
|
|
69
|
+
curl -fsSL https://raw.githubusercontent.com/infenia/claudon/main/install.sh | sh
|
|
70
|
+
|
|
71
|
+
# recommended: pin a release (see GitHub Releases); claudon.py is checked against that release's SHA256SUMS
|
|
72
|
+
curl -fsSL https://raw.githubusercontent.com/infenia/claudon/main/install.sh | CLAUDON_VERSION=vX.Y.Z sh
|
|
73
|
+
```
|
|
74
|
+
The checksum catches corrupted or mismatched downloads. To also prove a release file was built by this repo's
|
|
75
|
+
workflow, download it and run `gh attestation verify claudon.py -R infenia/claudon`.
|
|
76
|
+
|
|
77
|
+
### Direct Clone
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/infenia/claudon.git
|
|
80
|
+
cd claudon
|
|
81
|
+
python3 claudon.py ~/.claude -o report.html --open
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### โก WebAssembly (In-Browser / Zero Python)
|
|
85
|
+
Run Claudon entirely in your browser without local Python installed. The page loads `../claudon.py`,
|
|
86
|
+
so it has to be served over HTTP (opening the file directly via `file://` can't load it):
|
|
87
|
+
1. From the repository root run `python3 -m http.server` (or host the repo on any static server, e.g. GitHub Pages).
|
|
88
|
+
2. Open `http://localhost:8000/wasm/`.
|
|
89
|
+
3. Drop `.jsonl` transcripts, or use **Open Folder** on `~/.claude/projects` to keep project grouping and subagents.
|
|
90
|
+
|
|
91
|
+
**Nothing is uploaded.** Files are read by the browser and analyzed on your machine; the page's only network requests
|
|
92
|
+
download the Pyodide runtime (jsDelivr) and `claudon.py`, and once it shows *Ready* it keeps working offline. Chrome and
|
|
93
|
+
Edge ask to let the page *view* the folder. Browsers without that folder API (Firefox, Safari) show their own
|
|
94
|
+
"upload" prompt for folder pickers, which only grants the page read access.
|
|
95
|
+
|
|
96
|
+
### ๐ ๏ธ Native Binary (Nuitka)
|
|
97
|
+
To compile Claudon into a single native binary locally:
|
|
98
|
+
```bash
|
|
99
|
+
pip install nuitka==4.2.2 zstandard
|
|
100
|
+
python scripts/build_nuitka.py --onefile
|
|
101
|
+
```
|
|
102
|
+
Standalone executables are output to `dist/`.
|
|
103
|
+
|
|
104
|
+
### ๐ฆ Releases
|
|
105
|
+
Claudon follows **Semantic Versioning** and is released through an automated, reviewable pipeline: Conventional Commit PR titles drive an auto-generated release PR (version bump + [CHANGELOG](CHANGELOG.md)); merging it tags the release and publishes:
|
|
106
|
+
- **Nuitka Binaries**: Linux x86_64, macOS (arm64 and Intel) and Windows, attached to GitHub Releases with `SHA256SUMS` and build provenance attestations (`gh attestation verify <file> -R infenia/claudon`).
|
|
107
|
+
- **PyPI**: `uvx`, `pipx` or `pip` (trusted publishing).
|
|
108
|
+
- **npm**: `npx`, `pnpm dlx`, `yarn dlx` or `bunx` (with provenance).
|
|
109
|
+
|
|
110
|
+
Want pre-release builds? `uvx --prerelease allow claudon` or `npx claudon@beta`. Full process: [docs/RELEASING.md](docs/RELEASING.md).
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## โก Integration with Claude Code
|
|
115
|
+
|
|
116
|
+
Install Claudon as a native slash command inside Claude Code:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
claudon --install-plugin
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Once installed, simply type `/claudon` in any active Claude Code CLI session to instantly generate and open your analytics dashboard!
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## โ๏ธ Options & CLI Usage
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
claudon [PATH] [-o FILE] [--redact] [--pricing FILE] [--open] [--install-plugin [--force]] [--version]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
`PATH` can be a `~/.claude` directory, its `projects/` subfolder, a specific project directory, or a single `.jsonl` transcript file (default: `$CLAUDE_CONFIG_DIR` if set, else `~/.claude`).
|
|
133
|
+
|
|
134
|
+
| Flag | Description |
|
|
135
|
+
|---|---|
|
|
136
|
+
| `-o FILE`, `--out FILE` | Output HTML report file path (default: `cc_report.html`) |
|
|
137
|
+
| `--redact` | Redact prompts, titles, project names, paths, commands, session IDs and MCP server names for safe report sharing |
|
|
138
|
+
| `--pricing FILE` | Custom $/MTok rates keyed by model-id substring (longest match wins): `{"claude-opus-4-1": [input, output, cache_read, write_5m, write_1h]}` |
|
|
139
|
+
| `--open` | Automatically open the generated HTML report in your default browser |
|
|
140
|
+
| `--install-plugin` | Register `/claudon` slash command in `<config dir>/commands/` |
|
|
141
|
+
| `--force` | With `--install-plugin`: overwrite a `claudon.md` you have edited (otherwise it is left alone) |
|
|
142
|
+
| `--version` | Print the version |
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## ๐ What's in the Report?
|
|
147
|
+
|
|
148
|
+
- **Task Breakdown**: each human prompt through to completion.
|
|
149
|
+
- **Turns & Subagents**: model API calls vs. agent delegation.
|
|
150
|
+
- **Time, Thinking & Cost**: the breakdowns described [above](#why-claudon).
|
|
151
|
+
- **Bottlenecks**: failures, slow turns and loops, surfaced automatically.
|
|
152
|
+
|
|
153
|
+
The report is one self-contained `.html` file: no server, no external assets, easy to attach to an issue (use `--redact`).
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## ๐ค Contributing
|
|
158
|
+
|
|
159
|
+
Contributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) (PR titles must be [Conventional Commits](https://www.conventionalcommits.org/)), follow the [Code of Conduct](CODE_OF_CONDUCT.md), and report vulnerabilities privately per [SECURITY.md](SECURITY.md). See the [CHANGELOG](CHANGELOG.md) for release history.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## ๐ License
|
|
164
|
+
|
|
165
|
+
Developed by **Infenia Private Limited**. MIT License. See [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: claudon
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Interactive session analytics & HTML dashboard for Claude Code
|
|
5
|
+
Author: Infenia Private Limited
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/infenia/claudon
|
|
8
|
+
Project-URL: Repository, https://github.com/infenia/claudon
|
|
9
|
+
Keywords: claude,claude-code,analytics,dashboard,anthropic,llm
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Classifier: Topic :: Software Development :: User Interfaces
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Dynamic: license-file
|
|
22
|
+
|
|
23
|
+
<div align="center">
|
|
24
|
+
|
|
25
|
+
# Claudon
|
|
26
|
+
|
|
27
|
+
**See where your Claude Code time and money actually go.**
|
|
28
|
+
|
|
29
|
+
One command turns your session logs into an interactive HTML dashboard.<br>
|
|
30
|
+
100% local ยท zero dependencies ยท nothing leaves your machine.
|
|
31
|
+
|
|
32
|
+
[](https://github.com/infenia/claudon/actions/workflows/ci.yml)
|
|
33
|
+
[](https://pypi.org/project/claudon/)
|
|
34
|
+
[](https://www.npmjs.com/package/claudon)
|
|
35
|
+
[](https://pypi.org/project/claudon/)
|
|
36
|
+
[](LICENSE)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
uvx claudon --open
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
<img src="docs/assets/overview.png" alt="Claudon dashboard overview: tasks, wall time, cost, time breakdown and per-project cost" width="860">
|
|
43
|
+
|
|
44
|
+
<sub>Demo data. Your own sessions stay on your machine.</sub>
|
|
45
|
+
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Why Claudon?
|
|
51
|
+
|
|
52
|
+
Claude Code is fast until it isn't. Which turn burned ten minutes? Was it the model, a slow tool, or you being away? Did that failing tool call loop? What did the session really cost? Your answers are already in `~/.claude`; Claudon reads them and shows you:
|
|
53
|
+
|
|
54
|
+
- **Where time went**: model vs. tools vs. permission waits vs. idle, per task, turn and subagent.
|
|
55
|
+
- **What it cost**: token usage ร list prices per model generation (override with `--pricing`).
|
|
56
|
+
- **What went wrong**: automatic detection of tool failures, slow turns and retry loops.
|
|
57
|
+
- **How hard it thought**: thinking time vs. thinking tokens.
|
|
58
|
+
- **Safe to share**: `--redact` strips prompts, paths, commands and project names.
|
|
59
|
+
|
|
60
|
+
It is a single Python file using only the standard library. No telemetry, no network, no account.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## ๐ Quick Start
|
|
65
|
+
|
|
66
|
+
Use whichever runner you already have; each downloads and runs the latest release on demand:
|
|
67
|
+
|
|
68
|
+
| Tool | Run once | Install globally |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| **uv** | `uvx claudon` | `uv tool install claudon` |
|
|
71
|
+
| **pipx** | `pipx run claudon` | `pipx install claudon` |
|
|
72
|
+
| **pip** | | `pip install claudon` |
|
|
73
|
+
| **npm** | `npx claudon` | `npm install -g claudon` |
|
|
74
|
+
| **pnpm** | `pnpm dlx claudon` | `pnpm add -g claudon` |
|
|
75
|
+
| **Yarn** (2+) | `yarn dlx claudon` | |
|
|
76
|
+
| **Bun** | `bunx claudon` | `bun add -g claudon` |
|
|
77
|
+
| **Shell script** | | [`install.sh`](#standalone-shell-script) |
|
|
78
|
+
| **Browser** | [WebAssembly page](#-webassembly-in-browser--zero-python) | no install |
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
claudon ~/.claude -o report.html --open # after a global install
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
> The npm-family packages (npx, pnpm, yarn, bun) are a thin launcher around the same Python script, so they need
|
|
85
|
+
> **Python 3.11+** on your `PATH` (`python3`, `python` or `py`). No Python at all? Use the browser version or a
|
|
86
|
+
> standalone binary from [GitHub Releases](https://github.com/infenia/claudon/releases).
|
|
87
|
+
> Use `@beta` / `uvx --prerelease allow` for pre-releases.
|
|
88
|
+
|
|
89
|
+
### Standalone Shell Script
|
|
90
|
+
```bash
|
|
91
|
+
curl -fsSL https://raw.githubusercontent.com/infenia/claudon/main/install.sh | sh
|
|
92
|
+
|
|
93
|
+
# recommended: pin a release (see GitHub Releases); claudon.py is checked against that release's SHA256SUMS
|
|
94
|
+
curl -fsSL https://raw.githubusercontent.com/infenia/claudon/main/install.sh | CLAUDON_VERSION=vX.Y.Z sh
|
|
95
|
+
```
|
|
96
|
+
The checksum catches corrupted or mismatched downloads. To also prove a release file was built by this repo's
|
|
97
|
+
workflow, download it and run `gh attestation verify claudon.py -R infenia/claudon`.
|
|
98
|
+
|
|
99
|
+
### Direct Clone
|
|
100
|
+
```bash
|
|
101
|
+
git clone https://github.com/infenia/claudon.git
|
|
102
|
+
cd claudon
|
|
103
|
+
python3 claudon.py ~/.claude -o report.html --open
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### โก WebAssembly (In-Browser / Zero Python)
|
|
107
|
+
Run Claudon entirely in your browser without local Python installed. The page loads `../claudon.py`,
|
|
108
|
+
so it has to be served over HTTP (opening the file directly via `file://` can't load it):
|
|
109
|
+
1. From the repository root run `python3 -m http.server` (or host the repo on any static server, e.g. GitHub Pages).
|
|
110
|
+
2. Open `http://localhost:8000/wasm/`.
|
|
111
|
+
3. Drop `.jsonl` transcripts, or use **Open Folder** on `~/.claude/projects` to keep project grouping and subagents.
|
|
112
|
+
|
|
113
|
+
**Nothing is uploaded.** Files are read by the browser and analyzed on your machine; the page's only network requests
|
|
114
|
+
download the Pyodide runtime (jsDelivr) and `claudon.py`, and once it shows *Ready* it keeps working offline. Chrome and
|
|
115
|
+
Edge ask to let the page *view* the folder. Browsers without that folder API (Firefox, Safari) show their own
|
|
116
|
+
"upload" prompt for folder pickers, which only grants the page read access.
|
|
117
|
+
|
|
118
|
+
### ๐ ๏ธ Native Binary (Nuitka)
|
|
119
|
+
To compile Claudon into a single native binary locally:
|
|
120
|
+
```bash
|
|
121
|
+
pip install nuitka==4.2.2 zstandard
|
|
122
|
+
python scripts/build_nuitka.py --onefile
|
|
123
|
+
```
|
|
124
|
+
Standalone executables are output to `dist/`.
|
|
125
|
+
|
|
126
|
+
### ๐ฆ Releases
|
|
127
|
+
Claudon follows **Semantic Versioning** and is released through an automated, reviewable pipeline: Conventional Commit PR titles drive an auto-generated release PR (version bump + [CHANGELOG](CHANGELOG.md)); merging it tags the release and publishes:
|
|
128
|
+
- **Nuitka Binaries**: Linux x86_64, macOS (arm64 and Intel) and Windows, attached to GitHub Releases with `SHA256SUMS` and build provenance attestations (`gh attestation verify <file> -R infenia/claudon`).
|
|
129
|
+
- **PyPI**: `uvx`, `pipx` or `pip` (trusted publishing).
|
|
130
|
+
- **npm**: `npx`, `pnpm dlx`, `yarn dlx` or `bunx` (with provenance).
|
|
131
|
+
|
|
132
|
+
Want pre-release builds? `uvx --prerelease allow claudon` or `npx claudon@beta`. Full process: [docs/RELEASING.md](docs/RELEASING.md).
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## โก Integration with Claude Code
|
|
137
|
+
|
|
138
|
+
Install Claudon as a native slash command inside Claude Code:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
claudon --install-plugin
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Once installed, simply type `/claudon` in any active Claude Code CLI session to instantly generate and open your analytics dashboard!
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## โ๏ธ Options & CLI Usage
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
claudon [PATH] [-o FILE] [--redact] [--pricing FILE] [--open] [--install-plugin [--force]] [--version]
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
`PATH` can be a `~/.claude` directory, its `projects/` subfolder, a specific project directory, or a single `.jsonl` transcript file (default: `$CLAUDE_CONFIG_DIR` if set, else `~/.claude`).
|
|
155
|
+
|
|
156
|
+
| Flag | Description |
|
|
157
|
+
|---|---|
|
|
158
|
+
| `-o FILE`, `--out FILE` | Output HTML report file path (default: `cc_report.html`) |
|
|
159
|
+
| `--redact` | Redact prompts, titles, project names, paths, commands, session IDs and MCP server names for safe report sharing |
|
|
160
|
+
| `--pricing FILE` | Custom $/MTok rates keyed by model-id substring (longest match wins): `{"claude-opus-4-1": [input, output, cache_read, write_5m, write_1h]}` |
|
|
161
|
+
| `--open` | Automatically open the generated HTML report in your default browser |
|
|
162
|
+
| `--install-plugin` | Register `/claudon` slash command in `<config dir>/commands/` |
|
|
163
|
+
| `--force` | With `--install-plugin`: overwrite a `claudon.md` you have edited (otherwise it is left alone) |
|
|
164
|
+
| `--version` | Print the version |
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## ๐ What's in the Report?
|
|
169
|
+
|
|
170
|
+
- **Task Breakdown**: each human prompt through to completion.
|
|
171
|
+
- **Turns & Subagents**: model API calls vs. agent delegation.
|
|
172
|
+
- **Time, Thinking & Cost**: the breakdowns described [above](#why-claudon).
|
|
173
|
+
- **Bottlenecks**: failures, slow turns and loops, surfaced automatically.
|
|
174
|
+
|
|
175
|
+
The report is one self-contained `.html` file: no server, no external assets, easy to attach to an issue (use `--redact`).
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## ๐ค Contributing
|
|
180
|
+
|
|
181
|
+
Contributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) (PR titles must be [Conventional Commits](https://www.conventionalcommits.org/)), follow the [Code of Conduct](CODE_OF_CONDUCT.md), and report vulnerabilities privately per [SECURITY.md](SECURITY.md). See the [CHANGELOG](CHANGELOG.md) for release history.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## ๐ License
|
|
186
|
+
|
|
187
|
+
Developed by **Infenia Private Limited**. MIT License. See [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
claudon.py
|
|
4
|
+
pyproject.toml
|
|
5
|
+
claudon.egg-info/PKG-INFO
|
|
6
|
+
claudon.egg-info/SOURCES.txt
|
|
7
|
+
claudon.egg-info/dependency_links.txt
|
|
8
|
+
claudon.egg-info/entry_points.txt
|
|
9
|
+
claudon.egg-info/top_level.txt
|
|
10
|
+
tests/test_claudon.py
|
|
11
|
+
tests/test_scripts.py
|
|
12
|
+
tests/test_ui.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
claudon
|