Skip to content

SAFE + FAST · BUILT FOR AI-GENERATED SOFTWARE

Safe code. Built for machine speed.

Kotoba is a Lisp-shaped language designed for safe, ultra-fast AI-generated software. Inspectable programs, explicit capabilities, and content-addressed artifacts connect compiler checks to controlled execution.

hello.kotoba / IPFS

;; W1 pure representative: ordinary Clojure-shaped values/functions only.
(ns examples.w1-pure)

(defn double [n]
  (+ n n))

(defn main []
  (double 21))
  • source CID bafkreiaeohkv2zu… IPFS CIDv1 · raw · sha2-256 of hello.kotoba
  • source SHA-256 0471d55d668ed5f9… sha-256 of the exact file shown here
  • checked KIR SHA-256 92635333e1e0da86… the typed, effect-checked representation the compiler admitted
  • artifact identity SHA-256 cfea3b89cc022a6b… binds source, policy, compiler contract and target ABI

The source CID opens hello.kotoba. The SHA-256 digests identify source bytes, checked KIR, and artifact identity; they are not IPFS addresses.

FASTEST COLD BUILD · 4 OF 4 ORDERINGS QUALIFIED

Fastest cold build of any toolchain on this host.

11.75ms

Kotoba source to a WebAssembly artifact, process-cold — then executed, and the answer checked after the clock stopped.

  1. KotobaReleased CLI · WebAssembly 11.75 msfastest here
  2. C / ClangNative host 29.08 ms2.5× Kotoba
  3. Rust / rustcWebAssembly 38.99 ms3.3× Kotoba
  4. Rust / rustcNative host 56.02 ms4.8× Kotoba
  5. JVM / javacJVM class 171.53 ms14.6× Kotoba

Process-cold build wall time in milliseconds; shorter is faster. K=1 source, lanes interleaved on one host, 7 samples each.

All 4 orderings pass perfgate at its unrelaxed default policy — at least 5% and separated from the arms' own spread — so the ordering holds even though the host was busy. Bounded to this host, this source size and this run: build time is not execution speed, the advantage narrows as the source grows, and the released binary has a hard correctness ceiling. All five benchmarks, including the ones that go against Kotoba, are below. Measured 2026-08-31 on Apple M4.

When AI generates, builds, tests, and regenerates code continuously, build latency becomes infrastructure throughput.
DENY BY DEFAULT

No ambient authority

No implicit filesystem, network, process, clock, model, or secrets.

CHECKED KIR

Authority survives compilation

Types, effects, resources, and target support are admitted before emission.

HOST ENFORCED

Only the grant is bound

The host and provider enforce concrete scope and record the decision.

POST-QUANTUM FLOOR

No classical-only downgrade

New encryption and publication boundaries require ML-KEM or ML-DSA evidence and reject stripped PQ material.

01 The problem

AI can write faster than humans can review

Generated code may be useful and still reach a file, network, secret, process, model, or payment surface the request never intended to expose.

THE OLD DEFAULT

Build broadly, constrain later

A general-purpose program starts with ambient semantics. Sandboxes, IAM, containers, policy, and signing are added around it to recover the intended boundary.

THE KOTOBA DEFAULT

Grant narrowly, then compile

Effects and capabilities are part of the admitted computation. If the target cannot prove and bind the grant, it does not emit or run the artifact.

Kotoba complements runtime and OS isolation; it does not make those layers unnecessary.

Where Lisp's mind and GP 2's graph rewriting meet Rust's discipline

Kotoba is a small, data-oriented, Clojure-shaped language. Its design draws on Lisp's code-as-data tradition and GP 2's rule-based graph rewriting, with static discipline around authority, effects, resources, packages, and artifact identity.

INTUITIVE

Code as readable data

Immutable values, ordinary functions, explicit data, and a composable syntax are easy for humans and models to produce and inspect.

DECLARATIVE

Say what may happen

Effects, capabilities, resources, dependencies, and targets are visible inputs to admission—not surprises discovered after deployment.

SECURITY-FIRST

Less language, harder boundary

No ambient interop, runtime code loading, unrestricted mutation, guest-defined macros, or unbounded concurrency in the admitted component surface.

SAFE + FAST · BUILT FOR AI-GENERATED SOFTWARE.

This is a confinement direction, not an 'unhackable' claim. The compiler, verifier, runtime, providers, policy roots, key custody, and OS isolation remain in the trusted computing base.

02 How the boundary works

Security across the whole computation

The boundary is carried from intent to execution. Each stage narrows or verifies authority; no later stage is allowed to invent a grant.

1 · SOURCE

Declarative intent

A small, Clojure-shaped surface keeps programs readable and excludes ambient escape hatches.

2 · CHECK

Checked KIR

Types and transitive effects become a target-independent, inspectable representation.

3 · ADMIT

Intersect authority

Requested, delegated, local-policy, resource, and target grants can only narrow.

4 · IDENTIFY

Address the artifact

Code, dependencies, policy, compiler contract, and target ABI bind the computation's identity.

5 · ENFORCE

Bind at the host

The runtime and provider bind only admitted capabilities, enforce finite budgets, and emit receipts.

Content identity is not authority.

CID verification, signatures, revocation, host policy, resource checks, and OS isolation remain separate boundaries.

Lisp eval, without ambient host eval

Kotoba evaluates checked code as content-addressed data. The familiar (eval request) surface lowers to the typed :code/eval ability; it never receives source text, a reader form, a namespace, or a host object.

DEFINITION CID

What code?

The CID selects a hash-verified checked-KIR definition and its CID-only dependency closure.

ADMISSION CID

May it run here?

The exact interface, complete effect row, current allowance, fuel, and decreasing eval depth are bound before execution.

VALUE CID

What came back?

The typed result is persisted as content-addressed evidence. Its hash cannot retroactively authorize an effect.

Identity, authority, and result evidence are three different facts.

Machine contract: lang/typed-eval.edn. Compiler wire capability: 30. Bounded apply remains ordinary closed-module closure application.

Defaults for an AI-first computing stack

These are engineering claims with their qualification attached. Default, bounded-ready, partial, and direction are different states; none is silently promoted to universal.

DIRECTION MEASURED

Build faster. Run faster. Keep the boundary.

Kotoba publishes compiler-startup, developer-loop, native-runtime, and workload-domain measurements with exact-result checks. Current speed ranks remain withheld until their quiet-host gates pass; security admission is never removed to win a timing.

READY BOUNDED

Storage without a language ceiling.

Kotobase uses content identity, range reads, immutable history, and provider-neutral storage. Physical capacity, tenancy, retention, cost, replication, and execution budgets remain explicit; this is not an infinite-disk claim.

DEFAULT

Post-quantum cryptography by default.

Every new Kotoba cryptographic boundary must name ML-KEM or ML-DSA evidence and reject a classical-only downgrade. Existing Passkeys, transport, implementations, and key custody remain separately qualified boundaries.

DEFAULT

Authentication present. Authority denied by default.

Passkey identity belongs at the control boundary. A verified identity still receives no filesystem, network, storage, model, secret, payment, or GPU authority until an explicit scoped grant survives local policy and host checks.

READY BOUNDED

Flexible delegation that can only narrow.

Requested, delegated, local-policy, resource, and target scopes intersect. Delegation can be composed and attenuated, but cannot mint ambient authority or widen its issuer's grant.

READY BOUNDED

Web3 ready, chain-neutral at the root.

A stable Kotoba Principal and Passkey controller are primary. CAIP-10 accounts, ERC-1271, and ERC-6492 are explicit linked-account proofs; a wallet address never silently becomes storage or execution authority.

IMPLEMENTED PARTIAL

Zero-copy where ownership permits; one copy where a boundary requires it.

Columnar byte views retain vector, direct ByteBuffer, and Uint8Array backing. Arrow projection can keep uncompressed buffers columnar through the authorized Kotobase lake path. Network ingress, decompression, GPU upload, and immutable persistent updates remain named copy boundaries.

IMPLEMENTED PARTIAL

Arrow-shaped data. Explicit CPU SIMD and device-native GPU kernels.

On Apple M4, an uncompressed, non-nullable Arrow float32 column retained one WebAssembly linear-memory backing while Num executed an explicit v128 f32x4 kernel over its borrowed values slice with zero Arrow-to-SIMD copies; a scalar tail covered the remaining rows. In three qualified runs of the same 262,147-element scale workload and artifact, that SIMD kernel completed 3.66-3.72x faster than scalar Wasm. This is a kernel-and-host result, not a general runtime claim. The same bounded column path also retains one ArrayBuffer through its CPU views, crosses the GPU ownership boundary with one measured WebGPU upload, executes on Metal, and returns one four-byte scalar. Nullable columns, other Arrow dtypes, unified-memory upload removal, broader kernels, and universal CPU/GPU qualification remain pending.

DEFAULT

AI first. Agent-safe by default.

Kotoba is designed for programs written or operated by AI agents and bots. The stronger the model, the more important explicit effects, finite resources, capability confinement, receipts, and host enforcement become.

DIRECTION

AGI-ready boundaries, not an AGI claim.

The architecture is intended to keep authority explicit as models become more capable. Kotoba does not claim that AGI exists here, that generated programs are trustworthy, or that confinement removes the compiler, runtime, provider, key-custody, and OS trusted computing base.

Machine authority: lang/product-defaults.edn. Unlimited physical storage, zero copies everywhere, universal speed rank, AGI achieved, and unhackable remain forbidden absolute claims.

What AI-written Kotoba cannot ask for

Deliberately absent language surface
Boundary Why it is absent
compile, load, load-file, load-string, ns-resolve, read-string, require, resolve, use Components cannot manufacture code or authority from ambient process state. Source strings, reader forms, loaded namespaces, and compiled host objects were never effect-inferred and are not part of a definition CID. The admitted `(eval request)` operation is therefore separate: it selects already checked KIR by CID through :code/eval and is re-admitted by the host.
., .., import, new Arbitrary JVM/JS object and method access bypasses capability admission. Unrelaxable by grant dispatch: interop never reaches guard-component-ability-call, so grant intersection, receipts and revocation cannot see the call. Vacuous on the wasm32 ABI (no such path exists); load-bearing at portable/trusted, where the subset gate is the only boundary (no separate VM sandbox is claimed there).
alter-var-root, atom, binding, deref, dosync, ref, reset!, set!, swap!, var, volatile! External mutable state is provider-owned and capability/policy mediated; component-local state must use an explicitly bounded model. The invariant is AMBIENT, not mutation itself. Since 2026-09-02 that reading has two consequences instead of one. A cell that escapes, persists, or crosses a function is provider-owned and stays on the :state-kit-desugar path (effect row shows :state, a grant is required at instantiation, capability handles are rejected as stored values). A cell that does neither -- (let [a (atom 0)] (swap! a + 1) @a) -- needs no host at all: local-state slice 1 elaborates it into ordinary let rebindings, so nothing observes it but the straight-line code that owns it and no cell exists at runtime. atom / swap! / reset! / deref are therefore admitted-via-elaboration, and refused the moment the cell would escape. ref / dosync / volatile! / binding / var / alter-var-root / set! have no ability model decided and stay rejected fail-closed.
agent, future, locking, pmap, send, send-off Component scheduling and resources must remain tender-controlled and bounded. Neither definition CIDs nor delegated grants meter CPU or scheduling; fuel is per-instance and ambient threads would escape it. A structured-spawn ability with sub-budgeted fuel is designable but undecided; no widening path yet.
defmacro The safe component surface must be statically inspectable before execution. Unrelaxable: expansion executes code inside the compiler (build time), and the definition CID hashes post-desugar typed KIR, so unbounded macros both run early and make source identity unreviewable. defdesugar (bounded pure desugar) remains the admitted alternative.
catch, throw, try Ambient throw/try/catch is untracked non-local control flow: it exits scopes the inferred effect row never mentions and skips unwind obligations (dataspace facet retraction has no checked unwind yet). The ban is on the ambient form. Since 2026-09-02 the typed abort ability admits the heads by elaboration: the effect appears in the inferred row as :abort and the function lowers to [:result T E], so the ambient form never exists post-elaboration. Slice 2 (2026-09-02) made :abort propagate through calls and A-normalized an aborting operand or test into a let binding; neither widens the invariant, because a propagated abort is on the caller's row and an A-normalized one is the same elaboration in a different position. Where the unwind precondition would matter, the abort stays refused -- for a CALL now as well as for a throw.

These are named security constraints in lang/surface-status.edn, not features missing from a roadmap.

03 The evidence

Proof, with the boundary attached

Kotoba separates implementation evidence from market traction and keeps residual risk next to every safety claim.

33 cores

Internal production dogfooding

The wider Kotoba stack runs 33 inference cores internally. This proves the team operates its own stack; it is not customer traction, paid adoption, or revenue.

8 claims

Boundaries are machine-readable

Safety claims name their trusted computing base, negative evidence, and residual risk instead of collapsing into an 'unhackable' slogan.

deny by default

No grant, no host effect

An empty policy grants no filesystem, network, process, clock, model, or secret authority. Providers must also validate concrete resource scope.

Internal production use is dogfooding evidence only. It does not imply external customers, paid pilots, or revenue.

Five benchmarks. Five different questions.

Compiler startup asks how quickly one tiny source becomes an artifact. Build scaling asks what happens to that number when the source stops being tiny—and whether the artifact still answers. The developer loop separates resolution, checking, builds, and first result. Native runtime asks how fast already-built code runs. The workload-domain suite asks how strings, collections, allocation, I/O, concurrency, and a small real application behave. The results keep all five questions—and their evidence status—separate.

BUILD STARTUP · RANK UNQUALIFIED

4 toolchains, 21 runs each

Kotoba 40.998 ms · Rust 126.422 ms · C 146.324 ms · JVM 961.248 ms median.

21 rotating process-cold samples · load1 30.79 → 39.79 · required ≤ 1 · 2026-08-29 · Apple M4

RUNTIME · COVERAGE COMPLETE

6 workloads × 5 comparators

Amu native is exercised against Rust, Clang / C11, Zig, Go c-shared, Swift through one common native call boundary.

30/30 comparator/workload pairs · exact answers verified

RUNTIME SPEED · 19/30 QUALIFIED

19 of 30 pairs

Amu native wins 19 of the 30 comparator/workload pairs by at least 5%, separated from the arms' own spread. The bounded fastest claim needs every pair, so it stays unqualified — the count is the informative half.

At least 2 of those pairs cannot be won at all. On narrow-arithmetic, amu, Apple clang -O3 and rustc -O3 compile the kernel to the same 61-instruction sequence — clang and rustc byte-identical, amu differing only in register numbers. A 5% margin over identical code does not exist, so the bounded claim is unattainable rather than merely unmet.

Median of 5 host-qualified runs; the score ranged 19–20 and 19 of the 30 pairs qualified in every one. A single noisy sample can disqualify several pairs at once, so a one-run score is not precise to one pair.

busy-CPU 0.090 → 0.069 → 0.076 · required ≤ 0.10 · 2026-09-07

DEVELOPER LOOP · RANK UNQUALIFIED

11 toolchain paths

Dependency resolution, checking, clean and no-change builds, and process-cold first result are recorded separately.

7 samples per measured stage · load1 20.84 → 24.49 · required ≤ 1

BUILD SCALING · CEILING FOUND

8 source sizes

The same program from one function to 2048, built by every toolchain on the host and then executed. The released binary has the lowest cold-start cost here and a correctness ceiling above 128 functions.

artifacts checked after the clock stops · load1 2.73 → 2.73 · required ≤ 1 · 2026-08-31

WORKLOAD DOMAINS · RANK UNQUALIFIED

6 domains × 6 runtime paths

Strings, collections, allocation, file I/O, four-worker concurrency, and a request-admission policy application kernel are correctness checked.

7 samples in both process-cold and amortized lanes · load1 13.87 → 12.38 · rank withheld

Build time as the source gets larger

The benchmarks above build a program small enough to fit on one screen, which measures how quickly a toolchain starts. It says little about the number a developer actually waits on, which is the slope. This fifth benchmark generates the same program at increasing sizes — K independent four-operation functions and one entry point that calls all of them — and builds it through every toolchain on the host, in rotating order.

It then runs what each toolchain produced, after the clock has stopped. That check is not decoration. The fastest way to emit an artifact is to emit a broken one, so a lane that stopped working would otherwise post its best numbers exactly where it stopped working.

20 ms 100 ms 1 s 10 s K=1 32 128 512 2048 Generated functions (log scale) Build wall time (log scale) Kotoba / Amu → native Kotoba / Amu → Wasm rustc → Wasm rustc → native javac clang → native Kotoba · released CLI

Both axes are logarithmic: the sources span three orders of magnitude and so do the times. A line ends in a dot where the run ended, in a cross where that lane emitted an artifact that is not the program, and in a bar where the toolchain refused to build. Those three are not the same event and the two failures below are not the same failure.

Process-cold build wall time by source size; medians, one host, lanes interleaved
Toolchain / target K=1 K=32 K=128 K=129 K=512 K=1023 K=1024 K=2048
Kotoba · Released CLI · WebAssembly 11.753 ms 35.84 ms 111.538 ms invalid artifact invalid artifact invalid artifact build failed build failed
Kotoba / Amu · WebAssembly 733.255 ms 825.418 ms 1123.04 ms 1123.847 ms 3380.63 ms 9242.463 ms build failed build failed
Kotoba / Amu · Native aarch64-macos 962.198 ms 1509.84 ms 2973.249 ms 3000.243 ms 10601.87 ms 23725.327 ms build failed build failed
Rust / rustc · WebAssembly 38.992 ms 45.622 ms 66.066 ms 65.56 ms 151.592 ms 277.88 ms 280.867 ms 595.812 ms
Rust / rustc · Native host 56.023 ms 62.849 ms 82.107 ms 82.277 ms 159.519 ms 261.586 ms 260.934 ms 469.277 ms
C / Clang · WebAssembly no toolchain no toolchain no toolchain no toolchain no toolchain no toolchain no toolchain no toolchain
C / Clang · Native host 29.078 ms 30.442 ms 35.765 ms 36.581 ms 60.594 ms 104.992 ms 101.728 ms 223.232 ms
JVM / javac · JVM class 171.53 ms 197.998 ms 237.582 ms 238.611 ms 316.795 ms 378.252 ms 377.591 ms 454.632 ms

Measured 2026-08-31 on judahnoMac-mini.local (Apple M4). K is the number of generated functions; the Kotoba source runs from 9 to 14338 lines. Targets, ABIs, optimisation levels and runtime contracts differ across lanes, so this asks about developer feedback latency, not equivalent work. The host-load gate failed (load1 2.73–2.73, required ≤ 1), so these are observations of this run rather than portable figures. Because the lanes are interleaved, the ordering is qualified separately.

Which orderings survive the noise test

A ratio is not a ranking. perfgate refuses any ordering whose gap falls inside the two arms' own spread, however large the ratio looks, and refuses an arm with too few samples or too much noise. It runs here at its own default policy, unrelaxed — a threshold loosened to let this run through would be a benchmark measuring its own thresholds. Because the lanes are interleaved on one host, a gap that survives this test survives the host being busy.

Released Kotoba CLI against each comparator, at every size where it still emits a valid module
Size Compared against Kotoba faster? Gap vs combined spread Why not, if not
K=1 C / Clang · Native host yes, qualified 17.1 ms vs 1.0 ms
K=1 JVM / javac · JVM class yes, qualified 160.8 ms vs 5.4 ms
K=1 Rust / rustc · Native host yes, qualified 44.2 ms vs 0.6 ms
K=1 Rust / rustc · WebAssembly yes, qualified 27.1 ms vs 0.5 ms
K=32 C / Clang · Native host no 5.3 ms vs 1.0 ms improvement-below-threshold
K=32 JVM / javac · JVM class yes, qualified 161.9 ms vs 1.2 ms
K=32 Rust / rustc · Native host yes, qualified 26.7 ms vs 0.7 ms
K=32 Rust / rustc · WebAssembly yes, qualified 9.8 ms vs 0.6 ms
K=128 C / Clang · Native host no 75.8 ms vs 1.2 ms improvement-below-threshold
K=128 JVM / javac · JVM class yes, qualified 126.2 ms vs 2.2 ms
K=128 Rust / rustc · Native host no 29.3 ms vs 1.4 ms improvement-below-threshold
K=128 Rust / rustc · WebAssembly no 45.8 ms vs 1.1 ms improvement-below-threshold

improvement-below-threshold means the Kotoba lane was not faster at that size at all. The advantage is real and qualified at cold start, and it is gone against C by K=32 and against Rust by K=128. That crossover is the result, so it is shown rather than summarised away.

Two failures that are not the same failure

Three Kotoba lanes stopped working in this run, and publishing them as one row would have been wrong. One is a defect. The other two are declared bounds being enforced exactly as specified, and reporting those as defects would mean measuring the bounds instead of the compiler.

What stopped, and what it means
Observation Reading
The released kotoba CLI emits a module that will not compile above 128 functions A defect, and the reason to validate inside a harness. At K=129 a call has to carry function index 128, the first value that needs two LEB128 bytes, and the emitter writes one. The bytes say it is not a missing encoder but an unused one: local.set 128 is written 80 01, and call 128 one instruction later is written 80. The count of truncated operands is exactly K minus 128. The current compiler does not have it — Amu builds K=129 correctly, and the fix has been on its emitter's default branch since before this release was tagged.
Every Kotoba lane traps at K=512 when built with default settings Not a defect. A Kotoba module carries a declared call-fuel budget and the compiler default is 512 calls, which this workload crosses at K=512 where the entry point calls 512 leaves. The harness declares 1,048,576 units explicitly and records that it did. C, Rust and Java have no equivalent bound to raise.
Amu refuses the module outright once it would hold more than 1,024 functions Also not a defect, and the opposite of the first row. max-functions is a declared admission limit, so the compiler stops with kotoba.error/subset-reject and names what it refused, rather than emitting something that will not load. A loud ceiling and a silent one are very different results, and only a harness that executes the artifact tells them apart. Measured 2026-09-07: this is the whole program's ceiling, not one module's — max-project-functions is also 1,024 and is checked against the linked project, so no arrangement of modules compiles a 2,048-function program today.

What this establishes

The fifth benchmark's answers, including the ones that are unfavourable
Question Answer from this run
How fast is a cold Kotoba build of a small module? The released CLI builds K=1 in 11.753 ms process-cold, artifact executed and answer checked — the fastest first result of any lane measured here.
How large a module can the released binary build? Up to 128 functions. Beyond that it is not slower, it is wrong, and this harness reports that as a failed lane rather than a fast one.
Does build time stay competitive as the source grows? Through K=128 the released CLI is measured against Rust and C in the table above. Past that point the only Kotoba compiler that still emits a correct module is Amu, which runs on nbb rather than as a released binary, and is roughly an order of magnitude slower at every size measured — so at large sizes build speed is not currently a Kotoba strength, and this page is not going to claim otherwise.
How large a source has been built end to end? K=1023 through Amu — 7163 lines of Kotoba, artifact executed and the answer checked. That is one function short of the declared 1,024 ceiling, and the next size up is refused rather than mis-built.
Is the emitted code fast? Out of scope here — this measures building, not running. The native runtime suite above asks that question.

Bottom line: At the smallest size the released binary is faster than every comparator here by a margin that survives the noise test, and it has a hard correctness ceiling at 128 functions. The compiler without that ceiling is roughly an order of magnitude slower at every size measured. Both facts come from the same run, and the harness that found them is public, so the run can be disagreed with.

How long each native workload actually takes

The grid below reports the margin between two arms. That is the number perfgate rules on, but a percentage on its own does not say whether a workload runs in five milliseconds or five hundred, and it hides the difference between a contested pair and an irrelevant one. These panels are the medians those margins are computed from. Amu native is the coloured lane in every panel — including the panels where it is not first. Each panel is scaled to its own slowest arm, because the question a panel answers is who is faster in that workload.

Narrow arithmetic

  1. Clang / C11 6.41 ms
  2. Amu native 6.53 ms1.02× the fastest here
  3. Swift 6.55 ms
  4. Rust 6.58 ms
  5. Zig 8.24 ms
  6. Go c-shared 42.84 ms

Wide register pressure

  1. Amu native 5.80 msfastest here
  2. Rust 6.19 ms
  3. Clang / C11 6.50 ms
  4. Zig 6.97 ms
  5. Go c-shared 41.07 ms
  6. Swift 44.08 ms

Deep spill pressure

  1. Amu native 9.23 msfastest here
  2. Rust 9.61 ms
  3. Zig 9.71 ms
  4. Clang / C11 10.23 ms
  5. Go c-shared 51.86 ms
  6. Swift 124.27 ms

Call preservation

  1. Rust 4.77 ms
  2. Clang / C11 4.82 ms
  3. Amu native 4.85 ms1.02× the fastest here
  4. Swift 6.77 ms
  5. Zig 8.44 ms
  6. Go c-shared 32.49 ms

Branch + call control flow

  1. Clang / C11 4.67 ms
  2. Rust 4.90 ms
  3. Amu native 4.98 ms1.07× the fastest here
  4. Swift 6.72 ms
  5. Zig 8.95 ms
  6. Go c-shared 33.84 ms

Loop call back edge

  1. Clang / C11 139.84 ms
  2. Amu native 140.59 ms1.01× the fastest here
  3. Rust 141.73 ms
  4. Go c-shared 169.38 ms
  5. Swift 186.09 ms
  6. Zig 207.01 ms

Median milliseconds over 5 host-qualified runs; shorter is faster. Every arm returned the same independently checked answer, and the candidate median is one value per workload — the suite rotates each engine pair in ABBA/BAAB order, so the same Amu artifact is timed once per workload and then compared against each arm in turn. Unlike the other four benchmarks on this page, this one's quiet-host gate PASSED (qualified-host-load), so these are figures for this host rather than observations only. The bounded fastest claim still needs all 30 pairs, which is what the grid below is for.

Every runtime pair, win or loss

The bounded claim is all-or-nothing, so a single unqualified pair makes it false. Publishing only that verdict would hide which pairs are contested, so the whole grid is here. A cell is the mean improvement of Amu native over that comparator on that workload; positive means Amu is faster, and a check marks the pairs that clear perfgate — at least 5% and separated from the arms' own spread.

Amu native vs each comparator, 2026-09-07, host-qualified; ✓ = passes perfgate
Workload Rust Clang / C11 Zig Go c-shared Swift
Narrow arithmetic +0.4% -0.6% +20.1% +84.7% -0.6%
Wide register pressure +6.5% +10.9% +16.9% +86.0% +87.1%
Deep spill pressure +4.2% +9.3% +5.1% +82.2% +92.6%
Call preservation -1.0% -0.3% +42.9% +85.2% +29.6%
Branch + call control flow -2.6% -7.1% +43.8% +85.2% +25.1%
Loop call back edge +0.8% -0.1% +32.4% +17.2% +24.8%

Each cell is a bar grown from a centre line: right of it Amu native is faster, left of it slower. The two directions are scaled separately — the wins run to +93% and the losses only to −7%, so one shared scale would flatten every contested pair into the same invisible sliver. Sign is also carried by the side of the line and by the signed number, so no reading of this grid depends on telling two colours apart.

19 of 30 pairs qualified (median of 5; 19 in every run) · candidate 42f092ea5b61 · Apple M4, 10 logical CPUs, 16 GiB

Optimization delivery after the published run

The dated benchmark above remains immutable. New implementation slices are listed separately until the same-artifact suite reruns and passes its qualification gates.

Implemented surfaces that are not yet new speed claims
Surface Delivered Evidence boundary
Native vectors / allocation Bounded non-escaping vector literals are escape-proved and scalar-replaced on x86-64 and AArch64. 211 backend tests / 2,442 assertions; escaping vectors retain the checked host ABI. No new ranked timing yet.
String SIMD POSIX checked equality uses explicit 16-byte NEON or SSE2 comparison after handle and canonical UTF-8 validation. Optimized assembly and both native ISA semantic vectors verified. Windows remains separately pinned; latency rank pending.
Async I/O capability Root-confined eventual read/write/list/exists/delete use CompletableFuture on JVM and fs.promises on Node. JVM and Node real-filesystem tests pass. The public standalone Wasm benchmark still has no admitted host binding, so its I/O cell remains N/A.
Structured concurrency A bounded 32-child fail-fast scope joins, cancels siblings, and prevents child lifetime escape as canonical Kotoba state. 996 parity assertions across .kotoba authority and CLJC load path. This is structured lifetime semantics, not an OS-thread throughput result.
Kotoba CLI kotoba test/build consume the new compiler pin; kotoba compile emits sealed x86-64 and AArch64 KEXE directly. Public CLI lifecycle and AArch64 vector artifact verified. Native --run stays refused until a measured loader receipt is wired.

Compiler startup, four toolchains

  1. KotobaWebAssembly 40.998 msthe baseline
  2. Rust / rustcWebAssembly 126.422 ms3.084× Kotoba
  3. C / ClangWebAssembly 146.324 ms3.569× Kotoba
  4. JVM / javacJVM class 961.248 ms23.446× Kotoba

Process-cold wall time for one tiny source, in milliseconds; shorter is faster. 21 rotating samples per toolchain on Apple M4. The host-load gate FAILED on this run, so these are observations of one machine, not a ranking.

Tiny source-to-artifact process-cold build measurement
Toolchain Output Median p95 Relative elapsed time
Kotoba WebAssembly 40.998 ms 240.415 ms 1× Kotoba
Rust / rustc WebAssembly 126.422 ms 770.495 ms 3.084× Kotoba
C / Clang WebAssembly 146.324 ms 498.618 ms 3.569× Kotoba
JVM / javac JVM class 961.248 ms 2223.49 ms 23.446× Kotoba

KOTOBA 0.7.3 · RUSTC 1.97.1 · Homebrew clang version 22.1.7 · javac 24.0.2. Kotoba, Rust, and C emit Wasm; javac emits a class file. Different targets and compiler work make this a startup observation, not a universal ranking. The recorded host-load gate failed, so the table is not a qualified speed rank.

Dependency-free tiny-project developer-loop medians; N/A means no separate phase was measured
Toolchain / target Resolve Check Clean build No-change build Start + execute Clean build + first result
Kotoba · WebAssembly N/A 231.75 ms 62.906 ms 42.332 ms 57.253 ms 142.644 ms
Rust / Cargo · arm64 macOS native 138.018 ms 71.208 ms 896.478 ms 67.764 ms 371.522 ms 1299.171 ms
C / Clang · arm64 macOS native N/A 90.446 ms 121.838 ms 77.905 ms 327.741 ms 453.685 ms
Zig · WebAssembly N/A 387.713 ms 648.665 ms 464.795 ms 67.523 ms 728.007 ms
TinyGo · arm64 macOS native N/A N/A 1059.624 ms 395.305 ms 203.169 ms 1269.918 ms
Go · arm64 macOS native 43.553 ms 6979.823 ms 3499.277 ms 150.902 ms 247.051 ms 3755.431 ms
Swift / SwiftPM · arm64 macOS native 1017.252 ms 427.372 ms 3695.557 ms 1259.829 ms 431.84 ms 4016.271 ms
JVM / javac · JVM class N/A N/A 805.822 ms 739.957 ms 76.252 ms 882.074 ms
AssemblyScript · WebAssembly N/A 1074.197 ms 895.187 ms 1090.658 ms 64.658 ms 954.878 ms
.NET IL · .NET IL 2309.472 ms N/A 4750.407 ms 2141.103 ms 79.248 ms 4851.792 ms
.NET Native AOT · arm64 macOS Native AOT 2236.962 ms N/A 11995.489 ms 2707.907 ms 375.7 ms 12391.54 ms

Every emitted artifact produced 42 in a fresh process. Targets and runtime contracts differ; N/A is never zero. The host-load gate failed, so these are reproducible observations rather than a cross-language speed ranking.

Six domains, side by side

Each panel is scaled to its own slowest lane, because the question a panel answers is who is faster in that domain, not how the domains compare to each other. Kotoba's lane is the coloured one in every panel — including the panels where it is last. Its standalone Wasm artifact runs through a Node host and pays that startup on every process-cold sample, while Rust, C and Go run as native binaries; where the target has no ambient filesystem or thread contract at all, the lane is absent rather than zero.

String

  1. C / Clang 1.463 ms
  2. Rust 1.907 ms
  3. Go 1.974 ms
  4. JVM / Java 27.819 ms
  5. Kotoba / Wasm + typed JS host 30.539 ms20.9× the fastest here
  6. JavaScript / Node.js 31.628 ms

Collection

  1. C / Clang 1.357 ms
  2. Go 1.852 ms
  3. Rust 1.92 ms
  4. Kotoba / Wasm + typed JS host 29.98 ms22.1× the fastest here
  5. JVM / Java 31.42 ms
  6. JavaScript / Node.js 31.818 ms

Allocation

  1. C / Clang 1.353 ms
  2. Rust 1.943 ms
  3. Go 1.962 ms
  4. JVM / Java 26.447 ms
  5. Kotoba / Wasm + typed JS host 29.567 ms21.9× the fastest here
  6. JavaScript / Node.js 31.055 ms

I/O

  1. C / Clang 2.539 ms
  2. Rust 2.686 ms
  3. Go 6.577 ms
  4. JVM / Java 38.685 ms
  5. JavaScript / Node.js 94.124 ms
  6. Kotoba / Wasm + typed JS host N/A — not in this target's contract

Concurrency

  1. C / Clang 2.916 ms
  2. Rust 3.328 ms
  3. Go 3.377 ms
  4. JVM / Java 34.828 ms
  5. JavaScript / Node.js 55.105 ms
  6. Kotoba / Wasm + typed JS host N/A — not in this target's contract

Real application

  1. C / Clang 1.294 ms
  2. Go 1.964 ms
  3. Rust 2.047 ms
  4. JVM / Java 26.411 ms
  5. JavaScript / Node.js 29.534 ms
  6. Kotoba / Wasm + typed JS host 29.652 ms22.9× the fastest here

Process-cold medians in milliseconds; shorter is faster. The host-load gate failed on this run, so these panels are observations rather than a ranking, and the amortized lane below tells a different story again.

Process-cold workload-domain medians; N/A means the target contract does not provide that capability
Runtime path String Collection Allocation File I/O Concurrency Real app
Kotoba / Wasm + typed JS host 30.539 ms 29.98 ms 29.567 ms N/A N/A 29.652 ms
Rust 1.907 ms 1.92 ms 1.943 ms 2.686 ms 3.328 ms 2.047 ms
C / Clang 1.463 ms 1.357 ms 1.353 ms 2.539 ms 2.916 ms 1.294 ms
Go 1.974 ms 1.852 ms 1.962 ms 6.577 ms 3.377 ms 1.964 ms
JVM / Java 27.819 ms 31.42 ms 26.447 ms 38.685 ms 34.828 ms 26.411 ms
JavaScript / Node.js 31.628 ms 31.818 ms 31.055 ms 94.124 ms 55.105 ms 29.534 ms

Every sample returned the exact reference checksum. Kotoba uses its emitted Wasm and declared typed ABI; its standalone target has no ambient filesystem or thread contract, so those cells are reasoned N/A. The recorded host-load gate failed, so medians are observations, not a ranking.

Amortized in-process batch medians per base workload; N/A keeps the same capability boundary
Runtime path String Collection Allocation File I/O Concurrency Real app
Kotoba / Wasm + typed JS host 0.351 ms 0.039 ms 0.066 ms N/A N/A 0.048 ms
Rust 0.028 ms 0.002 ms 0.003 ms 1.217 ms 1.456 ms 0.002 ms
C / Clang 0.02 ms 0.001 ms 0.003 ms 1.61 ms 1.558 ms 0.001 ms
Go 0.023 ms 0.002 ms 0.004 ms 5.071 ms 1.582 ms 0.002 ms
JVM / Java 0.433 ms 0.051 ms 0.064 ms 17.175 ms 5.589 ms 0.043 ms
JavaScript / Node.js 0.336 ms 0.033 ms 0.067 ms 68.507 ms 7.771 ms 0.032 ms

Each larger in-process batch is divided by its declared workload multiplier. This amortizes startup but does not fully remove process, VM, or Wasm instantiation cost, so it is not labeled a perfectly warmed steady-state result. Kotoba's pure inc/dec map chains are fused into reduce without intermediate vectors; callbacks outside that proven subset keep eager materialization.

What each public benchmark does—and does not—establish
Question Compared implementations Current conclusion
Tiny Wasm compile + execute Kotoba, Rust, C, and JVM toolchains Four process-cold medians published above; only Kotoba/Rust/C share the Wasm target, and no general build-speed rank is claimed
Tiny-project developer loop Kotoba, Rust, C, Zig, TinyGo, Go, Swift, JVM, AssemblyScript, .NET IL, and .NET Native AOT Seven samples per available stage are published; target differences and a failed host-load gate prohibit a universal ranking
Native steady-state execution Amu native vs Rust, Clang / C11, Zig, Go c-shared, Swift All 30 semantic comparison cells are complete; speed ranking withheld because the quiet-host gate failed
Strings, collections, allocation, I/O, concurrency, and real app Kotoba, Rust, C, Go, JVM, and JavaScript runtime paths Exact checksums and process-cold plus amortized samples are published; standalone Kotoba I/O and threads are N/A, while its pure request-admission application is measured; the failed load gate withholds ranking

What the native suite covers

Each implementation returns an independently checked known answer. The suite rotates every engine pair in ABBA/BAAB order and measures after loading, mapping, and symbol lookup.

Six required native runtime workloads
Workload What it stresses Evidence status
Narrow arithmetic Exact result verified; timing unqualified
Wide register pressure Exact result verified; timing unqualified
Deep spill pressure Exact result verified; timing unqualified
Call preservation Exact result verified; timing unqualified
Branch + call control flow Exact result verified; timing unqualified
Loop call back edge Exact result verified; timing unqualified

Where each benchmark lives

Every number above comes from a public harness and a committed report, so a run can be repeated and a claim can be disagreed with. The in-repo paths in this table are checked against the working tree when this page is generated: a harness that moves fails the build rather than shipping a dead link.

The gate every ordering on this page is put through is kotoba-lang/perfgate, run at its own unrelaxed default policy. A threshold loosened to let a run through would be a benchmark measuring its own thresholds.

Bottom line: The artifacts, exact results and samples are real in all five benchmarks. Three of them — compiler startup, the developer loop and the workload domains — failed their quiet-host gate, so they rank nothing and are published as observations. The native runtime suite passed its gate and wins 19 of its 30 pairs, short of the every-pair claim it would need. Build scaling qualifies its cold-start ordering against every comparator on the host and finds a correctness ceiling in the same run. No universal speed rank is claimed anywhere on this page, and none of these runs licenses one.

Claims with their boundaries attached

These claims are generated from lang/safety-claims.edn. Each keeps its trusted computing base and residual risk visible, because a safety slogan without a boundary is only marketing.

T1-MEMORY

Admitted components cannot address runtime/native memory and component memory operations are bounded or trap.


Trusted computing base

bounded reader · frontend admission · artifact verifier · Wasm/native runtime

Residual risk

  • runtime-engine vulnerabilities remain in the TCB
  • native loaders require a second OS isolation boundary
T2-EFFECT

Every transitive component effect is declared and admitted before emission, including effects used by Kotoba-written providers.


Trusted computing base

effect inference · capability catalog · frontend call graph

Residual risk

  • kotoba and compiler grammar/effect parity must be continuously compared
T3-CONFINEMENT

An ungranted capability is absent or unbound and cannot reach a provider or native handler.


Trusted computing base

policy intersection · compiler import emission · tender import binding · host guard

Residual risk

  • provider and native implementations must independently validate resource scope
  • production effective grants must forbid wildcard scope
T4-DETERMINISM

The same admitted source, target, policy and lock produce the same observable pure result and artifact bytes.


Trusted computing base

canonical reader · deterministic lowering · pinned toolchain

Residual risk

  • host effects are deterministic only where their capability contract says so
T5-RESOURCE-BOUNDS

Source, admission, execution, memory and output use explicit finite bounds.


Trusted computing base

admission limits · fuel meter · runtime quota · supervisor timeout

Residual risk

  • platform supervisors do not yet have equal production isolation evidence
T6-SUPPLY-CHAIN

Release admission binds artifact identity, trusted signer, validity and reproducible evidence.


Trusted computing base

signature verifier · trusted signer configuration · clock · revocation set

Residual risk

  • key custody and external revocation distribution remain operational TCB
T7-BACKEND-PARITY

A shared portable component has equal acceptance, result and effect trace across qualified backends.


Trusted computing base

shared conformance manifest · backend adapters · comparison runner

Residual risk

  • compiler-only features are not portable and must be rejected by portable profiles
T8-HOST-RESOURCE-SCOPE

A component import reaches its provider or native handler only with a concrete post-intersection resource scope and emits a receipt.


Trusted computing base

capability intersection · host guard · provider handler · receipt sink

Residual risk

  • provider-specific path, redirect, symlink and tenant checks require Q5 kits

Qualification Q1, as of 2026-07-18.

Release binding

A language profile and an implementation release are separate until a signed envelope binds them.

LANGUAGE

Profile 6

package contract 1

IMPLEMENTATION

v0.7.0

profile binding: verified

PUBLIC DEFAULT

RELEASED

:docs/release-bound-profile

Kotoba v0.7.0 for darwin-arm64 is the public implementation bound to language profile 6 and package contract 1. Its signed envelope verifies the source tree, artifact digest, and 536-test / 8,580-assertion conformance result. Other platforms remain unbound.

Read the generated release evidence
04 Start using it

Start in sixty seconds

Install and self-check

brew tap kotoba-lang/kotoba
brew trust kotoba-lang/kotoba
brew install kotoba
kotoba selfhost check --json

Accept a valid response with an empty problem list.

A first program

(defn main []
  (+ 40 2))

This program requests no host imports; the emitted module has no imports.

Learn, try, then go deeper

A connected path from first program to language contracts, libraries, evidence, and deployment surfaces.

LEARN

Docs by intent

Start with installation, learn the admitted language, or inspect the normative semantics and conformance data.

Open documentation map
READ CODE

One source, one answer

The example below is the exact source compiled into the browser demo—not a JavaScript reimplementation.

Read the sample
RUN

Execute in this page

Load a same-origin, digest-bound WebAssembly artifact and call its exported Kotoba main function.

Open Play
BUILD

Libraries and contracts

Browse bounded core names, foundational libraries, package rules, and their current maturity boundary.

Browse libraries

A small Kotoba program, running for real

Amu compiles this pure Kotoba source to the wasm32-browser profile. The checked-in artifact has no imports and returns 42.

KOTOBA SOURCE
;; W1 pure representative: ordinary Clojure-shaped values/functions only.
(ns examples.w1-pure)

(defn double [n]
  (+ n n))

(defn main []
  (double 21))

Highlighting authority: kotoba-lang/grammarkotoba.grammar.highlight/tokenize → build-time HTML. Editor scope contract: source.kotoba. Browser highlighter dependency: none. Inspect dependencies

Compile locally: kotoba compile double-21.kotoba --target wasm32-browser --output double-21.wasm

PLAY · WEBASSEMBLY

Run the verified artifact

The browser fetches 344 bytes, verifies SHA-256, rejects every import, instantiates the module, and calls main().

Expected result: 42

Ready. No code has run yet.

This executes a precompiled, immutable example. Editing arbitrary source in the browser is not yet a shipped compiler surface.

Interactive demos: solar-helix (guest-driven WebGPU render) · kami-survivors (a .kotoba game) · gpu-clear (WebGPU smoke). Hosted on the wasm-webcomponent GitHub Pages surface; availability is per-browser WebGPU/WebAssembly support.

Libraries, without hiding the package boundary

Kotoba libraries are content-addressed graphs. Names and GitHub repositories help people discover them; definition and signed release CIDs say exactly what they are.

BOUNDED CORE

Generated symbol reference

Search the names admitted by the current bounded standard-library contract.

Browse core symbols
FOUNDATIONAL

Data, effects, I/O, tooling

Start with coll, spec, json, text, wit, async, time, fs, http, test, fmt, lint, and LSP contracts.

Browse the library map
PACKAGE CONTRACT

Content-addressed dependencies

Inspect exact dependency CIDs, identity layers, GitHub provenance, and the current publication boundary.

Open the library catalog and publish flow

Browse the whole organisation by tag

There are 2,215 public repositories in the kotoba-lang organisation. Every tag below is the GitHub topic of the same name, so the site filter and the org's topics are one vocabulary rather than two that drift. Pick one to open the catalogue already filtered.

Browse and filter all 2,215 repositories

A repository is not a published package. Exactly 1 library is published through the content-addressed registry; the rest of this list is discovery. Repository maturity labels do not imply 1.0 API stability, broad adoption, or production SLOs, and 255 repositories match no domain rule and are shown untagged rather than given the nearest label.

Search the checked reference

Search commands, standard-library names, diagnostics, and release status. The index is generated from machine authorities and stays in this page.

Try: compile, option-some, docs/link-missing

release

Release binding

Kotoba v0.7.0 for darwin-arm64 is the public implementation bound to language profile 6 and package contract 1. Its signed envelope verifies the source tree, artifact digest, and 536-test / 8,580-assertion conformance result. Other platforms remain unbound.

Open reference
cli

kotoba id

Create a chain-neutral Kotoba principal enrollment plan controlled by a passkey. Smart accounts are explicit CAIP-10 links; no chain or provider is the identity root.

Open reference
cli

kotoba run

Compile and run a Kotoba entry point.

Open reference
cli

kotoba compile

Compile Kotoba-family source to a target artifact. Web .kotoba uses checked KIR and the restricted kotoba-script backend; .cljs remains ClojureScript.

Open reference
cli

kotoba check

Validate Kotoba source, contracts, or package metadata without running it. Compiler adapter: frontend admit + --profile pure-product (T9.2).

Open reference
cli

kotoba graph

Query and transact the language graph store (kgraph) with Datomic-shaped operations.

Open reference
cli

kotoba git

Expose Kotoba repository operations as data, not shell-specific behavior.

Open reference
cli

kotoba rad

Run rapid application development workflows over Kotoba packages.

Open reference
cli

kotoba build

Build a Kotoba project into its checked target artifact. This is the direct project lifecycle command; rad build remains a compatibility spelling.

Open reference
cli

kotoba test

Check and run the admitted tests for a Kotoba project. This is the direct project lifecycle command; rad test remains a compatibility spelling.

Open reference
cli

kotoba deploy

Plan and apply package desired-state to a local receipt or a murakumo fleet reside target.

Open reference
cli

kotoba library

Inspect and publish a content-addressed library namespace through the existing Kotoba codebase and IPNS publication path.

Open reference
cli

kotoba hinshitsu

Run software-quality checks (evidence, gates, coverage, visual regression) as data.

Open reference
stdlib

comp2

Bounded core standard-library public name.

Open reference
stdlib

concat

Bounded core standard-library public name.

Open reference
stdlib

err

Bounded core standard-library public name.

Open reference
stdlib

err?

Bounded core standard-library public name.

Open reference
stdlib

every?

Bounded core standard-library public name.

Open reference
stdlib

find

Bounded core standard-library public name.

Open reference
stdlib

group-by

Bounded core standard-library public name.

Open reference
stdlib

merge

Bounded core standard-library public name.

Open reference
stdlib

ok

Bounded core standard-library public name.

Open reference
stdlib

ok?

Bounded core standard-library public name.

Open reference
stdlib

option-none

Bounded core standard-library public name.

Open reference
stdlib

option-none?

Bounded core standard-library public name.

Open reference
stdlib

option-some

Bounded core standard-library public name.

Open reference
stdlib

option-some?

Bounded core standard-library public name.

Open reference
stdlib

option-value

Bounded core standard-library public name.

Open reference
stdlib

partial1

Bounded core standard-library public name.

Open reference
stdlib

range

Bounded core standard-library public name.

Open reference
stdlib

range-step

Bounded core standard-library public name.

Open reference
stdlib

reverse

Bounded core standard-library public name.

Open reference
stdlib

reverse-into

Bounded core standard-library public name.

Open reference
stdlib

select-keys

Bounded core standard-library public name.

Open reference
stdlib

some

Bounded core standard-library public name.

Open reference
stdlib

stdlib-binary-closure-anchor

Bounded core standard-library public name.

Open reference
stdlib

unwrap-err

Bounded core standard-library public name.

Open reference
stdlib

unwrap-ok

Bounded core standard-library public name.

Open reference
stdlib

update

Bounded core standard-library public name.

Open reference
stdlib

zipmap

Bounded core standard-library public name.

Open reference
diagnostic

:command/unknown

The requested command is not in the public CLI contract. Use a command generated from lang/cli.edn.

Open reference
diagnostic

:contract/invalid

The CLI contract failed structural validation. Inspect the structured :errors collection; do not dispatch the command.

Open reference
diagnostic

:version/unsupported

The requested language or package contract version is unknown. Select a version listed under :supported in lang/version-policy.edn.

Open reference
diagnostic

:version/removed

The requested contract version has been removed. Migrate to the active version before compiling or running.

Open reference
diagnostic

:version/deprecation-expired

The compatibility window for a deprecated version has expired. Apply the migration named by the version policy.

Open reference
diagnostic

:release/invalid-semver

A release identifier is not strict SemVer. Use MAJOR.MINOR.PATCH with an optional valid pre-release or build suffix.

Open reference
diagnostic

:docs/no-release-bound-profile

No published implementation evidence binds the active language profile. Keep the public default blocked until a signed release envelope binds the implementation and profile.

Open reference
diagnostic

:docs/link-missing

A checked document points to a missing local target. Restore the target or update the authority map and regenerate the reference.

Open reference
diagnostic

:docs/profile-version-drift

Grammar, surface, and elaboration authorities disagree on the language profile. Reconcile the authorities before publishing documentation.

Open reference
diagnostic

:docs/generated-drift

A committed generated reference does not match its machine authority. Run kbb --backend sci scripts/generate-docs-reference.cljk and commit the result.

Open reference
diagnostic

:docs/validation-result-invalid

A user-validation observation is incomplete or overclaims an external result. Record participant class, task, outcome, evidence, and observed time.

Open reference

No query leaves the browser.

05 Around the language

Roadmap: widen only after the boundary holds

NOW

One versioned contract

Keep grammar, effects, checked KIR, target adapters, qualification, and first-run documentation aligned.

NEXT

Close provider gaps

Expand typed request/result conformance, adversarial testing, receipts, revocation, and reproducible release operations.

LATER

Earn wider deployment

Widen production use after provider, host-isolation, rollback, and soak evidence—and grow inspectable declarative libraries.

Read the maintained roadmap and non-goals

Roadmap items are direction, not promises of shipped capability or delivery dates.

Build the community in public

Kotoba does not yet claim a large community. Today the honest public meeting points are the source repositories, issue trackers, release history, and security channel.

DISCUSS & REPORT

Language issues

Ask a design question, propose a documentation improvement, or report a reproducible language-contract problem.

Open language issues
IMPLEMENT

Compiler and CLI issues

Follow implementation work, releases, target support, and runtime integration in the installable implementation.

Open implementation issues
SECURITY

Report privately

Use the published security policy for vulnerabilities; do not disclose exploitable details in a public issue.

Read security policy

Explore all public Kotoba repositories

Safe code. Trusted state. Controlled execution.

BLOG

Evidence before slogans

Read short engineering notes that connect product claims to measurements, authority files, and remaining gates.

Read the Kotoba blog
KOTOBA CLOUD

Controlled execution

Kotoba Cloud connects identity and deploy control to the execution environment. Discovery is live; hosted apply is not yet offered. Compute remains provided by separately governed services.

Open Kotoba Cloud
KOTOBASE

Trusted graph state

Kotobase is the content-addressed graph database for AI state and knowledge: explicit relationships, identifiable history, and scoped access.

Open Kotobase
MURAKUMO

Compute and inference plane

Fleet compute and model-serving infrastructure. Availability and route qualification remain service-specific.

Open Murakumo
ITONAMI

Agent work plane

Continuing agent work across workspaces, goals, evidence, tools, approvals, and governed effects.

Open Itonami

These services retain separate authority, availability, and qualification boundaries. Their connection is not proof that every Kotoba capability is available as a generally sold hosted service.

Read the contract or run the implementation

LANGUAGE AUTHORITY

kotoba-lang/kotoba-lang

Grammar, semantics, capability contracts, safety claims, CLI contract, documentation, and conformance fixtures.

Read the language authority
INSTALLABLE IMPLEMENTATION

kotoba-lang/kotoba

CLI, host integrations, providers, runtime adapters, integration tests, and target-specific qualification evidence.

Open the implementation
DOCUMENTATION

Learn, build, or evaluate

Separate paths for first use, language reference, backend implementation, security boundaries, and maturity evidence.

Choose a documentation path

Language profile 6; public-default release status: RELEASED.

The primary portable platform is WebAssembly Components with WASI 0.3.0. The elaboration pipeline has 11 named, fail-closed stages.