v0.4.2
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 upThat'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 |
|---|---|
![]() |
![]() |
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-climoraine 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_sessionwas 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-packagingworkflow dry-runs the full wheel build on any PR touching packaging paths, with areadelf -Vregression guard that would have caught the glibc regression fromv0.4.2rc1before 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 statusIf 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 updatesubcommand 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

