Skip to content

v1.9.0

Choose a tag to compare

@marmutapp marmutapp released this 19 Jun 22:30
· 17 commits to main since this release

Added

  • Next-Message Cost & Limit Predictor. A low/mid/high cost band for
    your next user message (pure read-side math over token_usage, no
    proxy required) plus a proxy-only 5h/weekly subscription-limit gauge
    read from Anthropic rate-limit response headers. Surfaces:
    observer predict <id> (+ --json), the session-detail
    "Next-message cost predictor" card, and GET /api/session/<id>/predict.
    Default-on [predict] config; node-local limit_snapshots
    (migration 049). Distinct from the model-switch cache forecaster.
  • scripts/restart-daemon.sh — a proxy-safe, atomic daemon-restart
    helper (route off → stop → relaunch → route on) with --compression on|off. Killing the daemon while a client routes through the proxy
    otherwise gives that session ConnectionRefused. See
    docs/daemon-restart-runbook.md.

Fixed

  • Conversation compression no longer corrupts large requests. The
    forward-path secrets scrubber applied line-oriented regexes across the
    whole serialized body; on compact JSON the generic token:<value>
    family's \S+ could devour structural bytes to end-of-body, truncating
    the request into invalid JSON and triggering an upstream 400 unexpected character on proxied Claude Code once a conversation grew past ~214KB.
    Scrubbing is now JSON-structure-aware (scrub.ScrubForward), and the
    proxy refuses to forward any compressor output that fails json.Valid,
    falling back to the original body. Verified live on ~1MB requests.
  • PreToolUse hook fails open on watchdog timeout (exits 0, not
    non-zero) so a momentarily busy daemon can never block the host tool and
    cascade the session.
  • Retention size-cap prune no longer sheds recent activity. A 30-day
    actions keep-floor plus a SizeCapUnmet warning replace the blind
    shed that could empty the table chasing a budget dominated by other
    tables (token_usage / cache).

Changed

  • Contact email domain migrated marmut.appsuperbased.app across
    documentation, package metadata, and the website source.

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.9.0-linux-x64.tar.gz
Linux arm64 observer-v1.9.0-linux-arm64.tar.gz
macOS x86_64 (Intel) observer-v1.9.0-darwin-x64.tar.gz
macOS arm64 (Apple Silicon) observer-v1.9.0-darwin-arm64.tar.gz
Windows x86_64 observer-v1.9.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.9.0

Org server (Docker)

The self-hosted org server ships as a Docker image and as per-platform observer-org-v1.9.0-* archives (attached below).

docker pull ghcr.io/marmutapp/observer-org:v1.9.0

The image is keyless-signed with cosign. Verify it:

cosign verify ghcr.io/marmutapp/observer-org:v1.9.0 \
  --certificate-identity-regexp 'https://github.com/marmutapp/superbased-observer-private/.*' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

Supply 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