A native language for reliable systems

Native code.
Typed failure.
Direct style.

Khora is a statically typed, native-compiled language that makes failures, capabilities, resource lifetimes, and concurrency visible without turning application code into ceremony.

It is for people writing services and tools that have to keep running: the kind of program where a dropped error, an unlogged dependency or a leaked handle is found in production rather than in review. Khora puts those four things in the type of a function so they are answered while the code is being written.

Native LLVM compilationStructured concurrencyNo VM or tracing GC
service.kh
pub fn load_user(id: Id) -> User
  with { db: Db }
  raises DbError

Before you read the implementation, the function type already tells you two important things:

withthe capabilities this function requires
raisesthe recoverable failures it can produce

The language should tell the truth

A Khora function can make required capabilities and recoverable failures explicit in its type. The same principle extends to concurrency, resources, and memory: important behavior should be visible rather than hidden in convention.

The important parts of a program belong in its model.

Direct style, functional core

Functional ideas without a monadic surface.

Khora keeps algebraic data types, immutable values, typed effects, row polymorphism, and composable pipelines while presenting them in code that reads like ordinary application logic.

Learn the language →
transform a collection
orders|>List::map(normalize)
|>List::filter(is_valid)
|>List::map(price)

One toolchain

The compiler stays the source of truth.

The commands you use every day and the integrations your editor or coding agent starts all talk to the same Khora compiler.

Developer workflow
khora checkkhora buildkhora testkhora fmtkhora doc
Started by your tools
khora lspYour editor starts the language server.
khora mcpYour coding agent starts the compiler-backed MCP server.

Where next?

Choose the path based on what you want to do, rather than where a page happens to live in the documentation tree.

Go from first program to exact answers.

Start with the language

Write the program. Let the type tell the truth.

Get started