@superbased/observer 1.25.0 → 1.27.0
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.
- package/README.md +125 -2
- package/README.template.md +4 -2
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -10,11 +10,12 @@
|
|
|
10
10
|
**Claude Code cost tracking. Cursor token usage. Codex spend.
|
|
11
11
|
AI coding agent observability — one local tool, proxy-accurate.**
|
|
12
12
|
SuperBased captures, normalizes, and analyzes every AI
|
|
13
|
-
coding tool call across **
|
|
13
|
+
coding tool call across **29 adapters** — Claude Code, Codex, Cursor,
|
|
14
14
|
Cline + Cline CLI, GitHub Copilot (VS Code) + Copilot CLI, Gemini CLI,
|
|
15
15
|
OpenCode, Google Antigravity, Cowork, Nous Research's Hermes Agent,
|
|
16
16
|
Kilo Code (legacy IDE extension + CLI), Aider, Goose, Devin, OpenClaw,
|
|
17
|
-
Pi,
|
|
17
|
+
Pi, Factory Droid, Open Interpreter, Command Code, and more — in one
|
|
18
|
+
local single-binary tool. An optional API proxy
|
|
18
19
|
reconciles the *exact* tokens your provider billed (net input, cache
|
|
19
20
|
5m/1h splits, reasoning tokens, long-context surcharges) instead of a
|
|
20
21
|
JSONL-derived estimate. No telemetry, no cloud, no data leaves your
|
|
@@ -41,6 +42,7 @@ the full two-plane explainer.
|
|
|
41
42
|
- [Per-AI-client setup](#per-ai-client-setup)
|
|
42
43
|
- [Architecture in detail](#architecture-in-detail)
|
|
43
44
|
- [Dashboard tour](#dashboard-tour)
|
|
45
|
+
- [Terminals — launch, join, and track your AI CLIs](#terminals--launch-join-and-track-your-ai-clis)
|
|
44
46
|
- [MCP tools reference](#mcp-tools-reference)
|
|
45
47
|
- [Compression mechanisms](#compression-mechanisms)
|
|
46
48
|
- [Cost and token math](#cost-and-token-math)
|
|
@@ -719,6 +721,127 @@ Each compression mechanism (json / code / logs / text / diff / html
|
|
|
719
721
|
explaining the actual algorithm.
|
|
720
722
|
|
|
721
723
|
|
|
724
|
+
## Terminals — launch, join, and track your AI CLIs
|
|
725
|
+
|
|
726
|
+
The dashboard is also a terminal host. Instead of tracking your AI
|
|
727
|
+
CLIs from the outside, you can launch them *inside* observer, watch
|
|
728
|
+
their live telemetry alongside the session they produce, and — new in
|
|
729
|
+
v1.25.0 — join a running one from a second browser tab. The terminal
|
|
730
|
+
surfaces are read-only where they touch your files and single-writer
|
|
731
|
+
where they touch your keyboard; nothing here mutates a repo or lets
|
|
732
|
+
two people type at once.
|
|
733
|
+
|
|
734
|
+
### Launch any supported AI CLI as a real terminal
|
|
735
|
+
|
|
736
|
+
Twenty-two CLI launchers — claude, codex, opencode, cursor, copilot-cli,
|
|
737
|
+
kilo, cline-cli, hermes, gemini, openclaw, pi, antigravity, qwen,
|
|
738
|
+
kiro, grok, kimi, devin, qoder, goose, droid, open-interpreter,
|
|
739
|
+
command-code — start from the dashboard's
|
|
740
|
+
**Launch here** control or from the command line as `observer <verb>`
|
|
741
|
+
(`observer claude`, `observer codex`, and so on). Each opens a **real
|
|
742
|
+
PTY** — a native pseudo-terminal on Linux and macOS, and a native
|
|
743
|
+
ConPTY on Windows 10 1809+ and Windows 11 (no WSL required). If the
|
|
744
|
+
tool's binary isn't on your `$PATH`, the launcher offers a guided
|
|
745
|
+
one-click install rather than failing. Dashboard launching is gated by
|
|
746
|
+
`[handoff].allow_dashboard_launch` (default `true`).
|
|
747
|
+
|
|
748
|
+
(The count is twenty-two *launchers*, not the adapter count — observer
|
|
749
|
+
tracks 29 adapters in total, but only these twenty-two ship a
|
|
750
|
+
first-class terminal launcher.)
|
|
751
|
+
|
|
752
|
+
### Attach-by-default
|
|
753
|
+
|
|
754
|
+
As of v1.25.0, `observer <verb>` runs the child **daemon-owned** so the
|
|
755
|
+
dashboard can join it, while the native terminal you launched from stays
|
|
756
|
+
fully interactive as seat #1 — you lose nothing by getting the extra
|
|
757
|
+
reach. Opt out per-run with `--no-attach`, or globally with
|
|
758
|
+
`[terminal.attach].default_on = false`; scripted or piped runs never
|
|
759
|
+
attach.
|
|
760
|
+
|
|
761
|
+
A daemon-owned child forwards more than the routing above: it also
|
|
762
|
+
carries over your shell's values for each tool's
|
|
763
|
+
registry-documented credential env keys — `ANTHROPIC_API_KEY` for
|
|
764
|
+
claude-code, `OPENAI_API_KEY` for codex and pi, `OPENROUTER_API_KEY`
|
|
765
|
+
for hermes, `XAI_API_KEY` for grok, `GEMINI_API_KEY`/`GOOGLE_API_KEY`
|
|
766
|
+
for gemini-cli, `COPILOT_PROVIDER_API_KEY` for copilot-cli, and others
|
|
767
|
+
with registry-documented key envs — so a shell-exported API key works
|
|
768
|
+
under attach exactly as it would bare. This is gated by
|
|
769
|
+
`[terminal.attach].forward_auth_env` (default `true`); values transit
|
|
770
|
+
the owner-only attach socket once per launch and are never logged or
|
|
771
|
+
persisted. One honest caveat remains: tools without a registry-documented
|
|
772
|
+
credential env (config-file, OAuth, or keychain auth) still see only
|
|
773
|
+
the **daemon's** environment, and dashboard-launched terminals always
|
|
774
|
+
do (there's no client shell to forward from) — for those, either
|
|
775
|
+
export the credential where `observer start` runs, or use
|
|
776
|
+
`--no-attach` to keep the child in your shell's environment.
|
|
777
|
+
|
|
778
|
+
### Jump in — multi-seat terminals
|
|
779
|
+
|
|
780
|
+
Every live daemon-owned run is joinable from any dashboard tab, whether
|
|
781
|
+
that tab is local or a paired remote device, as an extra seat. A
|
|
782
|
+
terminal holds up to **8 viewers** but exactly **one writer** at a time.
|
|
783
|
+
The writer lease moves seamlessly across the native terminal, a local
|
|
784
|
+
dashboard tab, and a remote dashboard tab — type into the native
|
|
785
|
+
terminal to reclaim it; an authenticated remote can take over with a
|
|
786
|
+
read-only fallback and a take-back for the seat it displaced. A freshly
|
|
787
|
+
launched run correlates to its observer session in roughly 10–30
|
|
788
|
+
seconds, after which its live telemetry lines up with the captured data.
|
|
789
|
+
|
|
790
|
+
### Per-terminal Files & Git panels
|
|
791
|
+
|
|
792
|
+
Each AI-tool terminal carries a read-only **Files** panel — a file tree
|
|
793
|
+
plus a text viewer rooted at that terminal's project root — and a
|
|
794
|
+
read-only **Git** panel showing branch, upstream, ahead/behind counts,
|
|
795
|
+
working-tree status, and a 100-commit log. Right-click to copy a path or
|
|
796
|
+
paste it into a live terminal. This is a read-only view in v1: no file
|
|
797
|
+
mutations, no diff view.
|
|
798
|
+
|
|
799
|
+
### Session Cockpit
|
|
800
|
+
|
|
801
|
+
Toggle the **⊙ Session** control on any AI-tool terminal for a
|
|
802
|
+
draggable, live panel of everything observer knows about that run:
|
|
803
|
+
|
|
804
|
+
- **Last activity** and **tokens/sec**, tagged with a measured-vs-
|
|
805
|
+
estimated badge
|
|
806
|
+
- **Live cost** with the AI-vs-tool split, plus the **next-message
|
|
807
|
+
cost band**
|
|
808
|
+
- **Context fill** against the model's context budget, and — for
|
|
809
|
+
proxy-routed sessions — the **5h / 7d rate-limit gauge**
|
|
810
|
+
- **Prompt-cache expiry chips** for the caches this session is keeping
|
|
811
|
+
warm
|
|
812
|
+
- **CPU / memory / disk sparklines** and the spawned-process tree for
|
|
813
|
+
the terminal
|
|
814
|
+
- The **last five turns**, each deep-linked into the full session
|
|
815
|
+
detail view
|
|
816
|
+
|
|
817
|
+
### Workspace grid
|
|
818
|
+
|
|
819
|
+
Run up to **9 concurrent tiles** (`[terminal].max_concurrent`),
|
|
820
|
+
drag and resize them, and your layout persists across reloads. On a
|
|
821
|
+
paired remote device the grid is read-only.
|
|
822
|
+
|
|
823
|
+
### Restarts & continuity
|
|
824
|
+
|
|
825
|
+
Twenty-one of the twenty-two launchers **auto-resume the same
|
|
826
|
+
transcript** after a daemon restart — a verified native resume, so the
|
|
827
|
+
conversation continues where it left off. openclaw is the sole holdout:
|
|
828
|
+
its resume is picker-only, so its attached session ends when the daemon
|
|
829
|
+
restarts. To pick any session back up — including openclaw's — fork it
|
|
830
|
+
with `observer <verb> --continue-from <session-id>`. That opens a new
|
|
831
|
+
session id and seeds a distilled handover of the prior session as its
|
|
832
|
+
first prompt — it works for all twenty-two launchers.
|
|
833
|
+
|
|
834
|
+
### Remote posture
|
|
835
|
+
|
|
836
|
+
Remote terminal access is opt-in, **tailnet-only** (served over your
|
|
837
|
+
private Tailscale network as private HTTPS), and off by default — there
|
|
838
|
+
is no public-internet exposure. It splits into a view tier and an
|
|
839
|
+
execute tier: `[remote].allow_terminal` (default `false`) governs remote
|
|
840
|
+
*keyboard* control, while `[remote].allow_terminal_view` (default
|
|
841
|
+
`true`) governs read-only viewing. Pairing is phone-first via QR code,
|
|
842
|
+
and the dashboard is mobile-friendly for checking in from a phone.
|
|
843
|
+
|
|
844
|
+
|
|
722
845
|
## MCP tools reference
|
|
723
846
|
|
|
724
847
|
Once you've run `observer init` (it's opt-in — `observer start`
|
package/README.template.md
CHANGED
|
@@ -10,11 +10,12 @@
|
|
|
10
10
|
**Claude Code cost tracking. Cursor token usage. Codex spend.
|
|
11
11
|
AI coding agent observability — one local tool, proxy-accurate.**
|
|
12
12
|
SuperBased captures, normalizes, and analyzes every AI
|
|
13
|
-
coding tool call across **
|
|
13
|
+
coding tool call across **29 adapters** — Claude Code, Codex, Cursor,
|
|
14
14
|
Cline + Cline CLI, GitHub Copilot (VS Code) + Copilot CLI, Gemini CLI,
|
|
15
15
|
OpenCode, Google Antigravity, Cowork, Nous Research's Hermes Agent,
|
|
16
16
|
Kilo Code (legacy IDE extension + CLI), Aider, Goose, Devin, OpenClaw,
|
|
17
|
-
Pi,
|
|
17
|
+
Pi, Factory Droid, Open Interpreter, Command Code, and more — in one
|
|
18
|
+
local single-binary tool. An optional API proxy
|
|
18
19
|
reconciles the *exact* tokens your provider billed (net input, cache
|
|
19
20
|
5m/1h splits, reasoning tokens, long-context surcharges) instead of a
|
|
20
21
|
JSONL-derived estimate. No telemetry, no cloud, no data leaves your
|
|
@@ -41,6 +42,7 @@ the full two-plane explainer.
|
|
|
41
42
|
- [Per-AI-client setup](#per-ai-client-setup)
|
|
42
43
|
- [Architecture in detail](#architecture-in-detail)
|
|
43
44
|
- [Dashboard tour](#dashboard-tour)
|
|
45
|
+
- [Terminals — launch, join, and track your AI CLIs](#terminals--launch-join-and-track-your-ai-clis)
|
|
44
46
|
- [MCP tools reference](#mcp-tools-reference)
|
|
45
47
|
- [Compression mechanisms](#compression-mechanisms)
|
|
46
48
|
- [Cost and token math](#cost-and-token-math)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@superbased/observer",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Claude Code cost tracking, Cursor token usage, Codex spend — AI coding agent observability across
|
|
3
|
+
"version": "1.27.0",
|
|
4
|
+
"description": "Claude Code cost tracking, Cursor token usage, Codex spend — AI coding agent observability across 29 adapters, proxy-accurate token counts and cost.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
7
7
|
"observability",
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"LICENSE"
|
|
43
43
|
],
|
|
44
44
|
"optionalDependencies": {
|
|
45
|
-
"@superbased/observer-linux-x64": "1.
|
|
46
|
-
"@superbased/observer-linux-arm64": "1.
|
|
47
|
-
"@superbased/observer-darwin-x64": "1.
|
|
48
|
-
"@superbased/observer-darwin-arm64": "1.
|
|
49
|
-
"@superbased/observer-win32-x64": "1.
|
|
45
|
+
"@superbased/observer-linux-x64": "1.27.0",
|
|
46
|
+
"@superbased/observer-linux-arm64": "1.27.0",
|
|
47
|
+
"@superbased/observer-darwin-x64": "1.27.0",
|
|
48
|
+
"@superbased/observer-darwin-arm64": "1.27.0",
|
|
49
|
+
"@superbased/observer-win32-x64": "1.27.0"
|
|
50
50
|
},
|
|
51
51
|
"scripts": {
|
|
52
52
|
"test": "node bin/observer.js --version"
|