Skip to content

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 19 Apr 13:20
30d6319

moraine v0.4.2

First production release of moraine-cli on PyPI — one-line install on macOS and every mainstream Linux distro. Paired with a redesigned monitor UI and a ClickHouse 25.12 / Claude Code MCP compat fix.

🚀 Install

uv tool install moraine-cli
moraine up

That's it. uv tool install drops managed shims for moraine, moraine-ingest, moraine-monitor, and moraine-mcp onto your PATH, and moraine up boots the stack (ClickHouse + monitor + ingest). Browse the monitor at http://127.0.0.1:8080.

Already have moraine from the old curl installer? Migrate cleanly:

moraine down           # stop the running stack
uv tool install moraine-cli
moraine up

🆕 What's new

A real sessions + flamegraph UI in the monitor (#247)

The monitor's old raw-events table is gone. The new landing page is a Sessions surface — a filterable list of every agent session with an inline transcript + flamegraph detail pane that pairs tool_call / tool_result events by tool_call_id to show real tool latencies.

Turn-by-turn, you can see which tools the agent called, how long each ran, and what args it passed — all without dropping into SQL. New GET /api/sessions powers the view; the app shell got a chromeless top bar, a sun/moon theme switch, and a condensed health chip strip.

Transcript view Flamegraph view
Session transcript Session flamegraph

Open moraine up running, hit http://127.0.0.1:8080, pick a recent session.

uv tool install moraine-cli is the recommended install (#239-#244, #248)

Moraine now publishes platform-tagged Python wheels to PyPI under the moraine-cli distribution. The short name moraine was already taken; the binary + console-script names on your PATH are still moraine, moraine-ingest, etc. — only the install command changes.

Linux wheels are built inside the pypa manylinux_2_28 containers, so the advertised glibc floor is honest. If you're on Debian 12+, Ubuntu 20.04+, RHEL/AlmaLinux/Rocky 9+, Fedora 35+, or Amazon Linux 2023, it just works. Apple Silicon macOS wheel is included too. x86_64 macOS and Windows are not supported yet.

Upgrades are now your package manager's job:

uv tool upgrade moraine-cli

moraine update is gone (#250)

The in-binary self-updater has been removed (along with the install-receipt file the old scripts/install.sh used to write). Running moraine update now returns an "unrecognized subcommand" error. Use uv tool upgrade moraine-cli instead — or re-run scripts/install.sh if you're on the curl-install path.

Claude Code MCP schema crash fixed (#256)

If you had the moraine conversation-search MCP enabled in Claude Code on v0.4.1, every session would error with 400 invalid_request_error: input_schema does not support oneOf, allOf, or anyOf at the top level. This release drops the offending oneOf from the open tool's JSON Schema (the constraint is already enforced at runtime). Claude sessions with moraine MCP now start cleanly.

🛠 Under the hood

  • #254 / #255 — ClickHouse 25.12 compat: get_session was rejected on the newest CH due to stricter aggregate-aliasing + boundary-uid subquery rules. Fixed both.
  • #249 — migrations smoke test now auto-discovers from moraine-clickhouse::bundled_migrations() so we can't silently ship a migration that isn't wired in.
  • #252 — packaging metadata aligned to Apache-2.0 across the workspace; description refreshed for PyPI.
  • #241 — new ci-packaging workflow dry-runs the full wheel build on any PR touching packaging paths, with a readelf -V regression guard that would have caught the glibc regression from v0.4.2rc1 before publish.

🐧 Platform support

Platform Wheel Notes
Linux x86_64 manylinux_2_28_x86_64 glibc 2.28+ (Debian 12+, Ubuntu 20.04+, RHEL 9+, AL2023, etc.)
Linux aarch64 manylinux_2_28_aarch64 same floor
macOS Apple Silicon macosx_11_0_arm64 macOS 11.0+
macOS Intel not published; use scripts/install.sh or build from source
Windows not supported yet

⬆️ Upgrading from v0.4.1

# Stop any running stack first
moraine down

# Switch to the PyPI install
uv tool install moraine-cli

# Back up and running
moraine up && moraine status

If you had scripts or runbooks that called moraine update: replace with uv tool upgrade moraine-cli (for the PyPI path) or re-run scripts/install.sh (for the curl-install path). There is no in-binary self-update any more — see #219 for the reasoning.


Changelog

  • feat(install): honor MORAINE_MONITOR_DIST and MORAINE_DEFAULT_CONFIG env overrides by @eric-tramel in #239
  • feat(install): Python wheel builder + moraine-cli package scaffolding by @eric-tramel in #240
  • ci: dry-run Python wheel build on packaging-path PRs by @eric-tramel in #241
  • release: TestPyPI/PyPI publish job via OIDC trusted publishing by @eric-tramel in #242
  • install: rename PyPI distribution to moraine-cli (re-target to main) by @eric-tramel in #244
  • chore(release): cut v0.4.2 by @eric-tramel in #245
  • feat(monitor): sessions surface + flamegraph viz replaces raw table by @eric-tramel in #247
  • fix(install): build linux wheels inside manylinux_2_28 for honest glibc floor by @eric-tramel in #248
  • test(clickhouse): auto-discover migrations in bundled_migrations() smoke test by @eric-tramel in #249
  • remove(cli): drop moraine update subcommand by @eric-tramel in #250
  • Update README.md by @eric-tramel in #251
  • chore(packaging): align license to Apache-2.0 and refresh description by @eric-tramel in #252
  • fix(conversations): disambiguate self-aliased aggregates rejected by CH 25.12 by @eric-tramel in #254
  • fix(conversations): point get_session boundary-uid subquery at v_conversation_trace by @eric-tramel in #255
  • fix(mcp): drop top-level oneOf from open tool input_schema by @eric-tramel in #256

Full Changelog: v0.4.1...v0.4.2