Everything released, with how to add it. Each library is a Maven repository on GitHub Pages: no account and no token, only a resolver. Scala libraries are built on Scala 3.3 LTS (and 2.13 where marked), so any Scala 3 from 3.3 on can use them.
The effect libraries, then the libraries for applications built on them. %%% for Scala.js and Scala Native.
| Library | Version | Platforms | What it is |
|---|---|---|---|
| okay-simple | 0.1.1 | JVM, JS, Native | Algebraic effects for Scala 3 and 2.13 behind one interface; three implementations (a machine, Free, tagless), standard effects, modules for JSON, shapes, streams, async, resources, transactions; interop with cats-effect, ZIO, kyo. |
| okay-scala | 0.1.1 | JVM, JS, Native | Scala 3 alone: rows A ! R, one CEK machine, no casts. Standard effects: State, Reader, Writer, Fail, Async, fibers, Ref, Deferred, Semaphore, Queue, Retry, Scope, Stream, Clock, Env, Log; interop with cats-effect, ZIO, tofu. |
| okay-direct | 0.1.0 | JVM | Direct style for Java 25: perform is a method call, handle runs a body; implementations on Loom, threads and Espresso (multi-shot); Scala 3 and 2.13 front ends with cats-effect and ZIO interop. |
| okay-kotlin | 0.1.0 | JVM, JS, Native | Kotlin 2.4 in two styles of one family: effects as interfaces with context parameters on coroutines (deep, multi-shot), and effects as data on okay-scala's CEK machine. |
| okay-http | 0.1.1 | JVM, JS, Native | HTTP as effects: Request and Response as data, a body text or bytes; the server's effect and the client's; the JDK's server and client, the browser's fetch, a loopback for tests. okay-http-rest: routes, links and resources (HATEOAS), problems in RFC 9457's shape. |
| okay-mcp | 0.1.0 | JVM, JS, Native | The Model Context Protocol as effects: JSON-RPC as data, a server a program over a Link (stdio, HTTP, a script in a test), tools and resources, elicitation — a question to the user from inside a tool's call. |
| okay-faces | 0.1.0 | JVM, JS | User interfaces on effects: one program, every face — a test script, a terminal, Swing, Laminar and plain DOM in a page, HTML from a server, a REST API, an MCP server for agents; hosting on Cloudflare Workers. |
| okay-store | 0.1.0 | JVM, JS, Native (jdbc: JVM) | Data as effects: journaled, versioned records typed by a schema (Store); documents with a query of reference meaning (Data) on memory, files, SQLite and Postgres; a type's repository, the whole of an ORM (Mapping), its fields checked by the compiler. |
| okay-serverless | 0.1.0 | JVM, JS (Workers, Lambda) | A cloud as effects: durable state without replay, everything a Cloudflare Worker can use as effects; one program on Cloudflare Workers, AWS Lambda, or in memory; okay-store's data and okay-faces' REST and MCP in the cloud; tokens in front. More. |
| okay-zig | 0.1.0 | Zig 0.17 | Effects for Zig in two layers with one set of handlers: contexts (a program a plain function, observers, guards as error unions) and a CEK machine (rows of effect types, k resumed any number of times); on okay's wire under the JVM's handlers, over pipes or through FFM; okay-kernel's TCK digest. zig fetch --save=okay "git+https://github.com/okay-effects/okay-zig#v0.1.0" |
| okay-proof | 0.1.0 | JVM, JS | A small LCF prover for the run time — every inference step an effect, a certificate okay-lean checks again — and okay-policy, a language of policies whose every decision is a theorem: okay-guard's. |
Public, not released yet: okay-lean (effects in Lean 4, laws proved). Live applications: Coinpath, okay-guard and okay-reliability.
Two Scala libraries of one design. A bridge in okay-simple (okay-effects-cek) runs okay-simple's code on okay-scala's machine, and OnCek.into puts it into an okay-scala program: one machine, one run.
One JSON (okay-effects-json), one HTTP model, one way of describing an effect (Describe): a type mapped by okay-store is served by okay-faces as REST resources and MCP tools with nothing more written.
The same model in Java and Kotlin; Kotlin's data style runs on okay-scala's machine. More languages on the front page.
Algebraic effects for Scala 3 and 2.13 behind one interface; three implementations (a machine, Free, tagless), standard effects, modules for JSON, shapes, streams, async, resources, transactions; interop with cats-effect, ZIO, kyo.
resolvers ++= Seq("okay-simple" at "https://okay-effects.github.io/okay-simple/maven")
libraryDependencies ++= Seq("io.github.okay-effects" %%% "okay-effects" % "0.1.1",
"io.github.okay-effects" %%% "okay-effects-machine" % "0.1.1") // the interface, and an implementation
Platforms: JVM, JS, Native. Source and documentation: github.com/okay-effects/okay-simple.
Scala 3 alone: rows A ! R, one CEK machine, no casts. Standard effects: State, Reader, Writer, Fail, Async, fibers, Ref, Deferred, Semaphore, Queue, Retry, Scope, Stream, Clock, Env, Log; interop with cats-effect, ZIO, tofu.
resolvers ++= Seq("okay-scala" at "https://okay-effects.github.io/okay-scala/maven")
libraryDependencies += "io.github.okay-effects" %%% "okay-scala" % "0.1.1"
Platforms: JVM, JS, Native. Source and documentation: github.com/okay-effects/okay-scala.
Direct style for Java 25: perform is a method call, handle runs a body; implementations on Loom, threads and Espresso (multi-shot); Scala 3 and 2.13 front ends with cats-effect and ZIO interop.
// Gradle (Kotlin DSL), Java 25
repositories { maven("https://okay-effects.github.io/okay-direct/maven") }
dependencies {
implementation("io.github.okay-effects:okay-direct-api:0.1.0")
implementation("io.github.okay-effects:okay-direct-loom:0.1.0") // or -threads, -espresso
}
Platforms: JVM. Source and documentation: github.com/okay-effects/okay-direct.
Kotlin 2.4 in two styles of one family: effects as interfaces with context parameters on coroutines (deep, multi-shot), and effects as data on okay-scala's CEK machine.
// Gradle (Kotlin DSL)
repositories { maven("https://okay-effects.github.io/okay-kotlin/maven") }
dependencies { implementation("io.github.okay-effects:okay-kotlin:0.1.0") }
Platforms: JVM, JS, Native. Source and documentation: github.com/okay-effects/okay-kotlin.
HTTP as effects: Request and Response as data, a body text or bytes; the server's effect and the client's; the JDK's server and client, the browser's fetch, a loopback for tests. okay-http-rest: routes, links and resources (HATEOAS), problems in RFC 9457's shape.
resolvers ++= Seq("okay-simple" at "https://okay-effects.github.io/okay-simple/maven",
"okay-http" at "https://okay-effects.github.io/okay-http/maven")
libraryDependencies ++= Seq("io.github.okay-effects" %%% "okay-http" % "0.1.1",
"io.github.okay-effects" %%% "okay-http-rest" % "0.1.1")
Platforms: JVM, JS, Native. Source and documentation: github.com/okay-effects/okay-http.
The Model Context Protocol as effects: JSON-RPC as data, a server a program over a Link (stdio, HTTP, a script in a test), tools and resources, elicitation — a question to the user from inside a tool's call.
resolvers ++= Seq("okay-simple" at "https://okay-effects.github.io/okay-simple/maven",
"okay-mcp" at "https://okay-effects.github.io/okay-mcp/maven")
libraryDependencies += "io.github.okay-effects" %%% "okay-mcp" % "0.1.0"
Platforms: JVM, JS, Native. Source and documentation: github.com/okay-effects/okay-mcp.
User interfaces on effects: one program, every face — a test script, a terminal, Swing, Laminar and plain DOM in a page, HTML from a server, a REST API, an MCP server for agents; hosting on Cloudflare Workers.
resolvers ++= Seq("okay-simple" at "https://okay-effects.github.io/okay-simple/maven",
"okay-http" at "https://okay-effects.github.io/okay-http/maven",
"okay-mcp" at "https://okay-effects.github.io/okay-mcp/maven",
"okay-faces" at "https://okay-effects.github.io/okay-faces/maven")
libraryDependencies ++= Seq("io.github.okay-effects" %%% "okay-faces" % "0.1.0",
"io.github.okay-effects" %%% "okay-faces-mcp" % "0.1.0", // and -rest, -html, -term, -test, -swing,
"io.github.okay-effects" %%% "okay-effects-machine" % "0.1.1") // -laminar, -dom, -cloudflare
Platforms: JVM, JS. Source and documentation: github.com/okay-effects/okay-faces.
Data as effects: journaled, versioned records typed by a schema (Store); documents with a query of reference meaning (Data) on memory, files, SQLite and Postgres; a type's repository, the whole of an ORM (Mapping), its fields checked by the compiler.
resolvers ++= Seq("okay-simple" at "https://okay-effects.github.io/okay-simple/maven",
"okay-store" at "https://okay-effects.github.io/okay-store/maven")
libraryDependencies ++= Seq("io.github.okay-effects" %%% "okay-store" % "0.1.0",
"io.github.okay-effects" %% "okay-store-jdbc" % "0.1.0") // SQLite and Postgres, the JVM
Platforms: JVM, JS, Native (jdbc: JVM). Source and documentation: github.com/okay-effects/okay-store.
A cloud as effects: durable state without replay (a step a transaction, a process a machine), KV, R2, D1, Hyperdrive, queues, the cache, rate limits, Durable Objects, event streams, cron as effects; one program on Cloudflare Workers, AWS Lambda, or in memory. The page.
resolvers ++= Seq("okay-serverless" at "https://okay-effects.github.io/okay-serverless/maven",
"okay-scala" at "https://okay-effects.github.io/okay-scala/maven",
"okay-simple" at "https://okay-effects.github.io/okay-simple/maven",
"okay-http" at "https://okay-effects.github.io/okay-http/maven")
libraryDependencies ++= Seq("io.github.okay-effects" %%% "okay-serverless" % "0.1.0",
"io.github.okay-effects" %%% "okay-serverless-cloudflare" % "0.1.0") // or -aws; -store, -faces, -policy, -simple
Platforms: JVM, Scala.js (Scala.js 1.22 or newer); -cloudflare and -aws Scala.js. -store needs the okay-store resolver, -faces the okay-faces and okay-mcp ones, -policy okay-proof's. Source and documentation: github.com/okay-effects/okay-serverless.
A small LCF prover for the run time — every inference step an effect, a certificate okay-lean checks again — and okay-policy, a language of policies whose every decision is a theorem: okay-guard's.
resolvers ++= Seq("okay-scala" at "https://okay-effects.github.io/okay-scala/maven",
"okay-proof" at "https://okay-effects.github.io/okay-proof/maven")
libraryDependencies ++= Seq("io.github.okay-effects" %%% "okay-proof" % "0.1.0",
"io.github.okay-effects" %%% "okay-policy" % "0.1.0")
Platforms: JVM, JS. Source and documentation: github.com/okay-effects/okay-proof.