Collaborative tooling Streamlined tools for team workflows
Unison Cloud Our platform for deploying Unison apps
"Bring Your Own Cloud" Run our Cloud on any container-based infra
Refined DX We've iterated on the high-friction parts of the dev experience
Runtime optimizations Vast improvements to our interpreter's speed and efficiency
Distributed systems frameworks We provide the building blocks for scalable, fault-tolerant apps
Unison Share A polished interface for browsing and discovering code
Contributor ecosystem A growing community supporting the language and tooling
●●●
Edit: ~/scratch.u
factorial n =
  if n > 1 then n * factorial (n-1) else n

guessingGame = do Random.run do
  target = Random.natIn 0 100
  printLine "Guess a number between 0 and 100"

  loop = do
    match (console.readLine() |> Nat.fromText) with
      Some guess | guess == target ->
        printLine "Correct! You win!"
      Some guess | guess < target ->
        printLine "Too low, try again"
        loop()
      Some guess | guess > target ->
        printLine "Too high, try again"
        loop()
      otherwise ->
        printLine "Invalid input, try again"
        loop()

  loop()















  
●●●
Terminal: ucm
scratch/main>                                                                                          

  Loading changes detected in ~/scratch.u.

  + factorial    : Nat -> Nat
  + guessingGame : '{IO, Exception} ()

  Run `update` to apply these changes to your codebase.

  
●●●
~/scratch.u
deploy : '{IO, Exception} URI
deploy = Cloud.main do
  name = ServiceName.named "hello-world"
  serviceHash =
    deployHttp Environment.default() helloWorld
  ServiceName.assign name serviceHash



●●●
~/scratch.u
guessingGame : '{IO, Exception} ()
guessingGame = do Random.run do
  target = Random.natIn 0 100
  printLine "Guess a number between 0 and 100"

  loop = do
    match (console.readLine() |> Nat.fromText) with
      Some guess | guess == target ->
        printLine "Correct! You win!"
      Some guess | guess < target ->
        printLine "Too low, try again"
        loop()
      Some guess | guess > target ->
        printLine "Too high, try again"
        loop()
      otherwise ->
        printLine "Invalid input, try again"
        loop()

  loop()
  




Feb 2018

Unison Computing company founding

The Unison triumvirate unites! Paul, Rúnar, and Arya found a public benefit corporation in Boston.
Aug 2019

First alpha release of Unison

Unison calls for alpha testers for the first official release of the Unison language.
Sep 2019

Strangeloop conference

The tech world gets an intro to Unison at the storied Strangeloop conference.
Apr 2021

Unison adopts SQLite for local codebases

Switched from git-style, filesystem-based database to new SQLite format for 100x codebase size reduction.
Jul 2021

Unison Share's first deployment

Unison's code hosting platform released. People start pushing and pulling code from their remote codebases.
Jun 2022

Unison Forall conference

Our first community conference is an online affair featuring topics from CRDTs to the Cloud.
Aug 2022

LSP support

The first appearance of the red-squiggly line for Unison appears in text editors.
Jun 2023

Projects land in Unison

We added the ability to segment your codebase into discrete projects, with branches for different work-streams.
Oct 2023

Kind-checking lands for Unison

Since their introduction, Unison's exhaustiveness and kind-checking features have prevented us from many headaches.
Nov 2023

Contributions added to Unison Share

We added the ability to make pull-requests to Unison Share. Unison OSS maintainers rejoice.
Nov 2023

OrderedTable storage added to the Cloud

OrderedTable is a typed transactional storage API on the Cloud. It's built atop other storage primitives; proving that storage can be compositional.
Feb 2024

Unison Cloud generally available to the public

After much alpha testing, we release the Unison Cloud to the general public! Folks deploy hello-world in a few commands.
May 2024

We open-sourced Unison Share

🫶 Unison Share belongs to us all.
Jul 2024

Cloud daemons

Long-running services (daemons) were added as a new Cloud feature.
Aug 2024

Ecosystem-wide type-based search

Discover projects, terms, and types across the entire ecosystem in a few keystrokes.
Sep 2024

Unison Forall 2024

Our second online conference showcases Unison on the web and more!
Jan 2025

Unison Desktop App

UCM Desktop offers visibility into your codebase structure with a rich, interactive UI.
Mar 2025

Volturno distributed stream processing library

We ship a high scale streaming framework with exactly-once processing and seamless, pain-free ops. Users write distributed stream transformations in an easy, declarative API.
Jun 2025

Runtime performance optimizations

The UCM compiler team delivers on an extended effort of improving Unison's runtime.
Aug 2025

MCP server for Unison

Our MCP server supports AI coding agents in typechecking code, browsing docs, and inspecting dependencies.
Oct 2025

Cloud BYOC

We launched Unison Cloud BYOC - Unison Cloud can run on your own infrastructure anywhere you can launch containers.
Oct 2025

UCM git-style diff tool support

We added a git-style code diff integration. View PRs and merges in a familiar format.
Nov 2025

Branch history comments

Annotate your branch history with helpful descriptions for yourself or collaborators.
Nov 2025

Unison 1.0 release

A stable release with a rich feature set for getting things done.
2018
2019
2020
2021
2022
2023
2024
2025

26,558+

Commits

3,490+

PRs merged

6.2k

Github stars

152,459

Unison library downloads

139,811+

Published Unison definitions

1,300+

Unison project authors

C FFI support Improved record types Improved library management Faster codebase sync Improved MCP New UCM desktop capabilities Cloud observability Agentic computing framework Kinesis on S3
Follow our roadmap