Skip to content

About

Morphir tooling and bindings to support the MoonBit language and ecosystem

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

108 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Morphir Moonbit Monorepo

FINOS - Incubating CI

A monorepo for Morphir implementation in Moonbit, providing core libraries and bindings for WebAssembly targets.

Overview

This repository contains the Moonbit implementation of Morphir, organized as a monorepo with multiple packages:

Project site

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.

Prerequisites

  • 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.

Installation

  1. Install mise by following the official installation guide

  2. Clone the repository:

    git clone https://github.com/finos/morphir-moonbit.git
    cd morphir-moonbit
  3. 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.

Development

Pre-Push Validation

⚠️ Important: All code must pass lint, format, and validation checks before pushing.

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       # Validation

Available Tasks

All development tasks are managed through mise. You can list all available tasks with:

mise tasks

Linting

# Run all linting tasks
mise run lint

# Lint YAML files only
mise run lint:yaml

# Check Moonbit code formatting
mise run lint:moonbit

Formatting

# Format all Moonbit code
mise run format

Building

# 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

Testing

# Run tests on WASM, WASM-GC, JavaScript and native
mise run test

Validation

# Run all validation checks (YAML lint + package structure)
mise run validate

# Verify package structure only
mise run validate:packages

Project Structure

morphir-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)

Build Targets

The workspace builds for four targets:

  1. WASI (wasm): For server-side and command-line applications
  2. Browser (wasm-gc): For browser-based applications with WASM-GC support
  3. JavaScript (js): For Node.js and the @morphir/morphir npm package
  4. 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.

AI Agent Skills

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.

Contributing

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:

  1. Fork it (https://github.com/finos/morphir-moonbit/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Read our contribution guidelines and Community Code of Conduct
  4. Commit your changes (git commit -am 'Add some fooBar')
  5. Push to the branch (git push origin feature/fooBar)
  6. 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]

License

Copyright 2026 FINOS

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

About

Morphir tooling and bindings to support the MoonBit language and ecosystem

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages