A monorepo for Morphir implementation in Moonbit, providing core libraries and bindings for WebAssembly targets.
This repository contains the Moonbit implementation of Morphir, organized as a monorepo with multiple packages:
- morphir-sdk: Standard library for Morphir with functional programming primitives
- morphir-ir: Versioned IR models, JSON codecs and migrations for v1–v4
- morphir-scheme: Embeddable Scheme, IR transforms and runtime
- morphir-host: Runtime adapters, snapshots and artifact publication
- morphir-engine: Scriptable file, directory, project and workspace pipelines
- morphir-core: Core abstractions and types for the Morphir ecosystem
- morphir-moonbit-bindings: FFI bindings for Moonbit WASM targets
- morphir-elm: Elm source generation from Morphir IR
- morphir-typing: Type inference and checking for Morphir IR
- morphir-sdk-spec: The IR specification of the Morphir SDK
- @morphir/morphir: CLI application in
apps/morphir - Morphir Workbench: shared Rabbita browser UI and Proton desktop host
The project site at https://finos.github.io/morphir-moonbit/ publishes the docs, the design records, the blog
and the Morphir Workbench. It is built from docs/, site/ and package READMEs by
apps/morphir-site and deployed on every push to main. To write for it, read
Writing for the site.
- mise - Development environment manager
- All other tools (Moonbit, Bun, yamllint, uv) are managed by mise
The toolchain library overview identifies
moonbitlang/core, moonbitlang/x and moonbitlang/async, including async support
for our tooling. These are foundational libraries within a broader dependency set.
-
Install mise by following the official installation guide
-
Clone the repository:
git clone https://github.com/finos/morphir-moonbit.git cd morphir-moonbit -
Install tools:
mise install
Note: Git hooks are automatically installed when you enter the directory via mise. The pre-push hook enforces lint, format, and validation checks before allowing pushes, preventing CI failures by catching issues locally.
The pre-push hook automatically runs these checks, but you can run them manually:
# Run all checks
mise run check
# Or individual checks
mise run lint # Linting
mise run lint:moonbit # Format check
mise run validate # ValidationAll development tasks are managed through mise. You can list all available tasks with:
mise tasks# Run all linting tasks
mise run lint
# Lint YAML files only
mise run lint:yaml
# Check Moonbit code formatting
mise run lint:moonbit# Format all Moonbit code
mise run format# Build all packages for all targets
mise run build
# Build for WASI target only
mise run build:wasi
# Build for browser (WASM-GC) target only
mise run build:browser
# Build JavaScript and native executables
mise run build:js
mise run build:native# Run tests on WASM, WASM-GC, JavaScript and native
mise run test# Run all validation checks (YAML lint + package structure)
mise run validate
# Verify package structure only
mise run validate:packagesmorphir-moonbit/
├── .config/
│ └── mise/
│ ├── config.toml # Mise configuration
│ └── tasks/ # Task definitions
│ ├── lint/
│ ├── format/
│ ├── build/
│ └── test/
├── .github/
│ └── workflows/
│ └── ci.yml # CI workflow
├── pkgs/ # Moonbit packages (workspace members)
│ ├── morphir-sdk/
│ ├── morphir-core/
│ ├── morphir-ir/
│ ├── morphir-scheme/
│ ├── morphir-engine/
│ ├── morphir-host/
│ └── morphir-moonbit-bindings/
├── apps/ # Applications (workspace members)
│ └── morphir/ # @morphir/morphir CLI
├── moon.mod # Root module configuration
└── moon.work # Workspace manifest (member modules)
The workspace builds for four targets:
- WASI (wasm): For server-side and command-line applications
- Browser (wasm-gc): For browser-based applications with WASM-GC support
- JavaScript (js): For Node.js and the
@morphir/morphirnpm package - Native (native): Standalone executables for the build platform
See the CLI target documentation for runtime
requirements. mise run test:cli checks CLI execution on all four targets.
This repository includes AI agent skills following the Agent Skills specification. These skills enhance AI coding assistants with project-specific knowledge.
Available Skills:
- code-reviewer: Comprehensive code review for PRs and changes
Supported Agents: Claude, GitHub Copilot, OpenAI Codex, Cursor, Windsurf, Google Antigravity
See .github/AGENTS.md for more information.
For any questions, bugs or feature requests please open an issue. For anything else please send an email to [email protected].
To submit a contribution:
- Fork it (https://github.com/finos/morphir-moonbit/fork)
- Create your feature branch (
git checkout -b feature/fooBar) - Read our contribution guidelines and Community Code of Conduct
- Commit your changes (
git commit -am 'Add some fooBar') - Push to the branch (
git push origin feature/fooBar) - Create a new Pull Request
NOTE: Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool (or EasyCLA). Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.
Need an ICLA? Unsure if you are covered under an existing CCLA? Email [email protected]
Copyright 2026 FINOS
Distributed under the Apache License, Version 2.0.
SPDX-License-Identifier: Apache-2.0