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