Sky

A pure-functional, Elm-family language that compiles to typed Go. One language for the whole stack — web, API, CLI, terminal, desktop — with a single promise: if it compiles, it works.

Start the tour →

Learn Sky

New here? A guided tour from your first app to a real web app — plus a chapter for developers coming from JavaScript, Python, Go, or Rust.

API reference

Every standard-library module, generated from source and searchable. The place to look up a function or type.

Guides & internals

Topic deep-dives (Sky.Live, Std.Db, Std.Ui, auth, deployment) and — for contributors — the Rust compiler architecture.

Why Sky

One language, whole stack

The same view code renders on the web (Sky.Live), the terminal (Sky.Tui), and the desktop (Sky.Webview). No separate front-end language, no serialization glue.

Errors are values, effects are explicit

Fallible things return Result Error a; side effects return Task Error a. The type tells you what can go wrong and what touches the outside world. No null, no hidden throws.

Batteries included

Auth, DB (one codec drives JSON and the database), UI, HTTP, money/decimals, jobs, observability — all in the standard library, all reviewed for security and scale.

It compiles to Go

You get Go's deployment story — a single static binary — and its ecosystem (any Go package via FFI, no hand-written bindings).

Hello, Sky

module Main exposing (main)

import Sky.Core.Prelude exposing (..)
import Std.Log exposing (println)

type Msg = Increment | Decrement

update : Msg -> Int -> Int
update msg count =
    case msg of
        Increment -> count + 1
        Decrement -> count - 1

main =
    println (String.fromInt (update Increment 0))

Ready? Take the tour →