Mesh Language

July 16, 2026 · View on GitHub

Mesh Language

Version License Build

Expressive, readable concurrency. Elixir-style syntax. Static type inference. Native single binaries.

Get StartedDocumentationContributing


Getting Started

1. Install Mesh

macOS and Linux

curl -sSf https://meshlang.dev/install.sh | sh

Windows (PowerShell)

irm https://meshlang.dev/install.ps1 | iex

Installer URLs:

2. Verify the install

meshc --version
meshpkg --version

Refresh an installed toolchain in place with either binary:

meshc update
meshpkg update

3. Start with hello world

meshc init hello_mesh
cd hello_mesh

Open main.mpl and replace its contents with:

fn main() do
  println("Hello, World!")
end

Compile and run it:

meshc build .
./hello_mesh

main.mpl remains the default executable entrypoint. If you need a different startup file later, use the optional [package].entrypoint = "lib/start.mpl" setting in mesh.toml.

4. Choose your next starter

Once hello-world runs, pick the starter that matches your next job:

  • meshc init --clustered hello_cluster — the minimal clustered starter. The generated example uses @cluster pub fn add() and the runtime-owned handler name Work.add.
  • meshc init --template todo-api --db sqlite todo_api — the honest local-only starter and the honest local single-node SQLite starter. It stays local-only, keeps SQLite single-node only, and includes actor-backed write rate limiting. See examples/todo-sqlite/README.md.
  • meshc init --template todo-api --db postgres shared_todo — the shared/deployable starter and the serious shared/deployable PostgreSQL starter. It clusters GET /todos, GET /todos/:id, and idempotent POST /todos; health plus unsafe-keyless PUT and DELETE remain local. It is the generated starter that owns the staged deploy + failover proof chain once you step onto the proof pages. See examples/todo-postgres/README.md.

Then follow the generated project README, or go straight to the docs:

Where to go next

Keep the public ladder starter/examples-first: the scaffold and /examples stay ahead of maintainer proof surfaces.

Maintainers / public release proof

The implementation roadmap for runtime-owned elasticity and execution routing is in Autonomous Scaling and Built-In Load Balancing Plan. The release proof is owned entirely by this repository; see https://meshlang.dev/docs/distributed-proof/ for the Docker/PostgreSQL, chaos, performance, soak, and capacity-driver gates.

Canonical assembled proof command:

set -a && source .env && set +a && bash scripts/verify-m034-s05.sh

Release candidate tags stay split:

  • binary candidate: v<Cargo version>
  • extension candidate: ext-v<extension version>

Hosted workflow evidence is expected from:

  • deploy.yml
  • deploy-services.yml
  • authoritative-verification.yml
  • release.yml
  • extension-release-proof.yml
  • publish-extension.yml

Public surfaces checked by that proof include:

Inspect these retained artifacts after a run:

  • .tmp/m034-s05/verify/candidate-tags.json
  • .tmp/m034-s05/verify/remote-runs.json

Contributing

See CONTRIBUTING.md.

License

This project is licensed under the MIT License. See LICENSE.