Mesh
v14.0 — in development

Write a server.
Ship a fleet.

Mesh is a compiled language with typed actors and distribution in the programming model. Declare eligible work with @cluster; the runtime applies the routing, continuity, and capacity policy in your manifest.

work.mpl · api/router.mplmesh
# work.mpl
@cluster
pub fn add() -> Int do
  1 + 1
end

# api/router.mpl
from Api.Todos import (
  handle_get_todo,
  handle_list_todos
)

pub fn build_router() do
  HTTP.router()
    |> HTTP.on_get("/todos",
         HTTP.clustered(handle_list_todos))
    |> HTTP.on_get("/todos/:id",
         HTTP.clustered(handle_get_todo))
end
work declaration: @clusterruntime policy: mesh.toml
compiled
LLVM native binaries
typed
Hindley–Milner inference
concurrent
actor-model runtime
distributed
@cluster is a primitive
the infrastructure diff

Keep orchestration out
of your handlers.

In a configured autonomous cluster, @cluster declares eligible work and the runtime owns execution placement, continuity, and pressure-aware routing. Public ingress, credentials, and provider configuration remain deployment responsibilities.

infra.diffruntime-owned concerns
application-side worker selection
client-visible worker topology
per-handler retry loops
sticky execution routing
ad hoc continuity records
application-owned pressure scoring
+@cluster
api/router.mpl — everything that's leftmesh
from Api.Health import handle_health
from Api.Todos import (
  handle_create_todo,
  handle_get_todo,
  handle_list_todos
)

pub fn build_router() do
  HTTP.router()
    |> HTTP.on_get("/health", handle_health)
    |> HTTP.on_get("/todos",
         HTTP.clustered(handle_list_todos))
    |> HTTP.on_get("/todos/:id",
         HTTP.clustered(handle_get_todo))
    |> HTTP.on_post("/todos", handle_create_todo)
end
declare the work, wrap the route, then configure the runtime contract in mesh.toml
runtime-owned failover

Simulate node loss.
Explore recovery.

This interactive panel illustrates topology and rerouting; it is not a live cluster or a zero-loss guarantee. Actual recovery depends on quorum, replicas, readiness, continuity policy, and stable operation identity. Click any node below to explore the sequence.

mesh://cluster — illustrative topology
app ingressexternal · load-balancednode-1leader · workernode-2voter · workernode-3voter · worker
// click a server to take it down
cluster healthynodes 3/3routed 0mode illustrative
standard library

Server primitives
included.

HTTP, WebSockets, database drivers, structured JSON, actors, jobs, binary values, and testing ship with the toolchain. Use packages for ecosystem-specific protocols and native libraries.

api/router.mplhttp
pub fn build_router() do
  HTTP.router()
    |> HTTP.on_get("/todos", handle_list_todos)
    |> HTTP.on_get("/todos/:id", handle_get_todo)
    |> HTTP.on_post("/todos", handle_create_todo)
end
module 01 / 12built in

Bounded runtime telemetryCluster.telemetry() exposes scheduler, mailbox, HTTP, dispatch, process, and resource counters; meshc cluster provides the operator and continuity views.

available
measured, not marketed

Native speed.
Honest numbers.

Benchmarked on dedicated Fly.io machines — 2 vCPU, 4 GB RAM, same region, private network. The comparison shown here is one minimal HTTP/1.1 endpoint, not a general application-performance claim.

2.3×
Elixir's throughput, with 59% lower median latency
throughputreq/s · higher ↑
Rust46,244
Go30,306
Mesh29,108
Elixir12,441
latencyp50 / p99 ms · lower ↓
Rust2.06 / 4.55
Mesh2.77 / 16.94
Go2.95 / 8.51
Elixir6.74 / 25.14

bar = p50 · dot = p99

memoryMB startup baseline · lower ↓
Go1.5
Elixir1.6
Rust3.4
Mesh4.9

recorded before load

GET /text · Fly.io performance-2x · 100 connections · 30s warmup + 5×30s runs · run 1 excluded · full methodology →

current surface

One language,
the whole path.

Mesh 14 connects the type system, actor runtime, service libraries, native packages, and cluster operations. Each row links to the exact public contract.

areaimplemented surfaceguide
LanguageInference, generics, algebraic types, interfaces, pattern matching, pipes, and Result propagationread →
ConcurrencyTyped actors, services, supervisors, jobs, timers, links, monitors, and bounded channelsread →
Service stackHTTP and WebSocket servers and clients, structured JSON, SQLite, PostgreSQL, pools, ORM, and migrationsread →
Distribution@cluster work, remote actors, continuity, adaptive routing, capacity drivers, and bounded telemetryread →
Native ecosystemChecksum-pinned ABI 1 archives plus official Borsh, Anchor validation, and Solana packagesread →
ToolchainNative compiler, formatter, tests, REPL, migrations, package manager, LSP, editor support, and operator CLIread →
install the toolchain

One command to get started.

Use the command below on macOS or Linux. The getting-started guide includes the Windows PowerShell installer.

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