v1.17.0
Added
-
Nine new tool adapters — the 10-tool adapter wave (freebuff descoped).
Observer now captures 26 adapters total. Each new adapter ships with a
testdata fixture, an operator doc, an integration-registry row, a dashboard
tool color, and adocs/cross-adapter-schema-mapping.mdsection (§3.11–3.19):qwen-code— Qwen Code CLI (Gemini-CLI fork), Claude-Code-shaped JSONL
under~/.qwen; GROSS input netted against cached.kiro-cli— AWS Kiro CLI; mode-dependent dual store (interactive flat
bundles vs--no-interactiveSQLiteconversations_v2keyed by the RAW
cwd, translated through crossmount); SigV4, native-exempt.crush— Charmbracelet Crush; project-local.crush/crush.db
discovered viaprojects.json; Unix-SECONDS timestamps.kimi-code— Moonshot Kimi CLI;wire.jsonlusage.record
(inputOtheris already NET); no seed lane (DocAssisted only).grok— xAI Grok CLI; 8-file ACP session bundles, with per-request
token splits pulled from the GLOBAL~/.grok/logs/unified.jsonl
correlated bysid(no timestamp heuristics).devin— Devin CLI; SQLitemessage_nodesTREE walked along
main_chain_idto dedupe regeneration branches so tokens never
double-count; per-messagemetadata.metricstokens.aider— Aider; per-repo.aider.chat.history.mdMarkdown, with watch
roots = discovered transcript FILE paths (a bounded breadth-first
native-home walk memoized once per process); prose tokens GROSS→netted.qoder— Alibaba Qoder CLI; Claude-Code-shaped JSONL under
~/.qoder/projects; NO local model or tokens (server-side only —
honest-zero, native-exempt).goose— Block Goose; WAL SQLitesessions.dbwith SESSION-level
tokens only (accumulated_*+accumulated_cost); input GROSS→netted vs
cache_read;SessionIDis store-scoped (<id>@<sha8(store)>) so the
YYYYMMDD_seqids can't collide across a WSL + Windows store pair.
Fresh installs pick all nine up automatically; an EXPLICIT
enabled_adapters
list must add the new tool names (qwen-code,kiro-cli,crush,
kimi-code,grok,devin,aider,qoder,goose) — the startup WARN
names any that are missing. -
Seeded session-handoff launchers for the new adapters —
observer qwen,
observer kiro,observer kimi,observer grok,observer qoder, and
observer gooseaccept--continue-from <session-id>to distill a handover
and seed it as the tool's first prompt (18 launchers total).qwen,
kiro,grok,qoder, andgooseseed directly;kimiis DocAssisted
(no-pseed lane).devin,aider, andcrushdeliberately ship no
launcher (no scriptable seed lane). -
The watcher and adapter registry now accept a FILE as a watch root
(not only a directory), which theaideradapter needs for its per-repo
transcript-file watch set. -
Guarded proxy-route config-lane writers —
internal/proxyroutegained
RegisterKimiCode(TOMLbase_urlin~/.kimi-code/config.toml),
RegisterCrush(JSON map-merge incrush.json), andRegisterQwenCode
(rewrites~/.qwen/settings.jsonmodel.baseUrl, stricter guard: refuses
any custom host). Each backs up (.bak) and writes via temp/rename, skips
benignly when the config is missing, is idempotent when already observer,
and refuses a foreign URL; API keys are never touched. A new additive
registry fieldCapability.ProxyProbemarks "writer ready, promotion
pending a live probe"; these writers fire ONLY throughobserver init—
batch under--all(honoring--skip-proxy-route), or one per-tool consent
prompt in the interactive checklist (default NO).⚠️ Once a tool is routed,
stopping the daemon breaks it until reverted (the standard routed-tool
caveat — see the daemon-restart runbook). -
Per-adapter Backfill scan modes in the dashboard — Settings → Backfill
now derives onescan-<tool>row per integration-registry adapter (26 rows),
backed by the genericobserver scan --force --adapter <tool>lane
(idempotent; overridesenabled_adaptersfor the run). A future adapter's
Backfill row appears automatically. -
Pricing: GPT-5.6 and Grok 4.5 model launches. Added
gpt-5.6-sol
($5/$30),gpt-5.6-terra($2.50/$15),gpt-5.6-luna($1/$6), and a
gpt-5.6family row. GPT-5.6 introduces the first non-Anthropic explicit
cache-write tier (writes at 1.25× uncached input, reads keep the 90%
discount); the write rate is wired into the cost table but INERT until a live
5.6 response grounds the cache-write usage field. Addedgrok-4.5($2/$6,
the new xAI flagship — previously under-billed via thegrokfamily row at
4.3 rates) andgrok-build-0.1/grok-build($1/$2); bumped thegrok
family prefix to flagship rates.docs/pricing-reference.mdupdated.
Changed
- Adapter routability promotions.
aider,goose, andgrokwere
live-grounded through the:8820proxy and promoted toroutable_now
(observer drives no route today; the launchers stay non-proxied).
kimi-codeandcrushwere promoted further to observer-driven Proxy
routes after live turns landedapi_turnsrows through their config-lane
writers.qwen-codestays route-blocked — its (empty)modelProvidersmap
overridesmodel.baseUrl, so the env/base-URL lanes are grounded-dead and
the writer needs a matching provider entry first. - Dashboard tool-identity colors for the 10 previously-uncolored adapters
(light + dark tokens, CVD-validated), plus the missingtools.tsentries.
Fixed
- Actions page window selector was a no-op. The 7d/14d/30d window computed
windowDaysbut never passed it to/api/actions(only the Timeline
day-counts honored it)./api/actionsgained the same optionaldays
contract as/api/sessions(0 = unwindowed; legacy callers unchanged) and
the page now threads the selected window. - antigravity-cli cross-OS + guard coverage. Added the antigravity-cli
cross-OS project-root anchors and its guard watcher-conformance row.
Downloads
Pre-built binaries for each supported platform are attached below. Linux variants bundle antigravity-bridge.exe next to the observer binary for WSL2 users of the Antigravity adapter.
| Platform | Asset |
|---|---|
| Linux x86_64 | observer-v1.17.0-linux-x64.tar.gz |
| Linux arm64 | observer-v1.17.0-linux-arm64.tar.gz |
| macOS x86_64 (Intel) | observer-v1.17.0-darwin-x64.tar.gz |
| macOS arm64 (Apple Silicon) | observer-v1.17.0-darwin-arm64.tar.gz |
| Windows x86_64 | observer-v1.17.0-win32-x64.zip |
Verify with sha256sum -c SHA256SUMS (or shasum -a 256 -c SHA256SUMS on macOS) from the directory containing the downloads.
Also available via npm: npm install -g @superbased/observer@1.17.0
Org server (Docker)
The self-hosted org server ships as a Docker image and as per-platform observer-org-v1.17.0-* archives (attached below).
docker pull ghcr.io/marmutapp/observer-org:v1.17.0The image is keyless-signed with cosign. Verify it:
cosign verify ghcr.io/marmutapp/observer-org:v1.17.0 \
--certificate-identity-regexp 'https://github.com/marmutapp/superbased-observer-private/.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.comSupply chain
CycloneDX SBOMs are attached: observer.cdx.json and observer-org.cdx.json.
SLSA Level 3 build provenance for the binaries is attached below as a *.intoto.jsonl attestation. The build runs on the private origin repo, so pass that as the source when verifying an extracted binary with slsa-verifier v2.7.0 or newer (older versions fail with unexpected tlog entry type: expected intoto:0.0.2, got dsse:0.0.1):
slsa-verifier verify-artifact ./observer \
--provenance-path *.intoto.jsonl \
--source-uri github.com/marmutapp/superbased-observer-private