Product

What Oko owns, supported platforms, source setup, interfaces, operations, and support.

Migrated from README.md

![Source](https://github.com/wisent-ai/oko) ![Issues](https://github.com/wisent-ai/oko/issues) ![Wisent](https://wisent.ai) ![Discord](https://discord.gg/qRjpkthq54) ![LinkedIn](https://www.linkedin.com/company/wisent-ai/) ![X](https://x.com/wisentai) ![Enterprise](https://calendly.com/lbartoszcze)

Oko: Understand What Your AI-Native Team Is Working On—and Why

Understand Your Team’s Interactions with AI.

What is the ROI on tokens? How did David from HR solve this issue? How long were my offshore contractors working yesterday?

Oko helps you find answers to those questions. We sync, analyse and interpret the transcripts of your interactions with AI to build a proactive, helpful layer of your interactions with your AI models. Monitor your team’s goals, speed and effectiveness. Oko knows everything!

It ships the reusable OkoKit Swift package, the oko-cli command-line application, and the capability-protected oko-router-proxy. The native macOS interface is a separate product in `wisent-ai/oko-desktop`.

Product boundary

Oko owns:

  • discovery of supported local coding-agent processes;
  • import of masked, provider-neutral Transcript Lake exports;
  • the disposable SQLite full-text-search projection;
  • normalized transcript, session, process, Git, worktree, synchronization, and routing logic in OkoKit;
  • headless catalogue, goal, telemetry, synchronization, and diagnostic operations in oko-cli;
  • local goal-lifecycle inference through a qualified GGUF served only on loopback;
  • the scoped loopback model-routing proxy in oko-router-proxy.

Oko does not own:

  • a native application bundle, SwiftUI views, application lifecycle, or Sparkle updates — Oko Desktop owns those;
  • raw vendor transcript stores — vendors own them and Transcript Lake owns the masked canonical archive;
  • model credentials — Skarbiec owns secrets and Stado owns their materialization boundary;
  • remote serving-time model routing — Brama owns that contract; Oko's qualified goal-lifecycle model is an on-device exception and never receives provider credentials;
  • remote retained history or organization policy.

Package products

swift
.package(url: "https://github.com/wisent-ai/oko.git", branch: "main")

Consumers depend on the library product:

swift
.product(name: "OkoKit", package: "oko")

The package has no dependency on SwiftUI, Sparkle, or Oko Desktop.

Supported platforms

Oko core currently supports macOS 14 or newer only. Splitting the native app into Oko Desktop does not by itself make OkoKit, oko-cli, or oko-router-proxy portable.

Linux and Windows are not supported by the current package. The remaining platform-specific boundaries include Darwin/POSIX calls, Apple's Network and FoundationModels frameworks, CGhostty, launchd, sandbox-exec, macOS application paths, and Unix permission/socket assumptions.

The intended portability order is a platform-neutral catalogue/search target, then a Linux CLI/proxy adapter, then Windows process, socket, path, and ACL adapters. Oko Desktop remains macOS-only.

Source usage

Requirements: macOS 14 or newer and Swift 6 / Xcode 16 or newer.

bash
git clone https://github.com/wisent-ai/oko.git
cd oko
swift build --product oko-cli
swift build --product oko-router-proxy

Install a previously built CLI with a stable signing identity:

bash
./scripts/install-oko-cli.sh

The installer writes ~/.oko/bin/oko-cli. Oko Desktop no longer builds, installs, embeds, or updates that executable.

Enable the bounded autonomous operator and install its long-running launcher:

bash
oko-cli autonomy enable --mode experimental
./scripts/install-oko-cli.sh
stado service deploy oko-autonomy --host <registry-target> \
  --from "$HOME/.oko/bin/run-autonomy-service"

Experimental mode considers only the signed-in local user's active goals under ~/Documents/CodingProjects/Wisent, completes at most one accepted goal per day, retries transient failures after 15 minutes, and forbids purchases, irreversible external actions, releases, and service mutations. A goal is closed only after Jeden Pursuit returns a readable successful receipt with an independent acceptance verdict. oko-cli autonomy status reports the policy and the last 20 attempts; oko-cli autonomy disable stops new objective execution. --mode full expands selection to organization goals, permits reversible deployments, and raises the successful-run limit to 24 per day while purchases and irreversible external actions remain disabled.

Install a qualified goal-lifecycle release and register its loopback llama-server with Stado:

bash
./scripts/install-goal-lifecycle-model.py stado://releases/oko/models/lifecycle-qwen3-4b/<sha256>

Interfaces

  • Oko app: canonical human interface for session inventory, transcript rendering, search, local resume, and configured team views.
  • `oko-cli`: headless catalogue, routing, sync, and diagnostic operations.
  • `oko-cli autonomy`: persisted delegated policy, bounded objective selection, Jeden Pursuit execution, and receipt-gated goal completion.
  • `oko-router-proxy`: capability-protected loopback model proxy.
  • `oko-mcp`: read-only Model Context Protocol server over the catalogue (oko_recent_sessions, oko_search_sessions). It opens the SQLite projection read-only and never indexes, migrates, or writes.
  • `oko-goal-lifecycle`: Stado-managed loopback llama-server for the qualified oko-goal-lifecycle-v1 GGUF; transcript text never leaves the Mac during inference.
  • `OkoKit`: shared Swift library for transcript, process, Git, worktree, search, and routing logic.
  • Transcript Lake export: canonical historical input contract.
  • Stado release objects: immutable signed archives, standalone CLI, guard, identity helper, proxy, digest manifest, and appcast when published.

Operational model

  • Configuration comes from explicit settings and environment values; there is no compiled router fallback.
  • Imported catalogue and SQLite FTS data are disposable projections.
  • Credentials are materialized for exact Skarbiec consumers and remain process-local.
  • A proxy being reachable does not prove provider authorization, quota, or end-to-end model success.
  • Autonomous execution is disabled until an explicit persisted policy enables it; the Stado-managed service invokes a single lease-protected scheduler.
  • The autonomy scheduler counts successful accepted outcomes against its daily limit; idle and failed attempts remain recorded and are retry-backoff gated.

Related product

  • Sending or resuming a mirrored peer transcript is disabled when the matching vendor session does not exist locally.
  • Shared service-role cloud sync has no per-user privacy boundary; use only in an explicitly trusted environment until user authentication and RLS exist.
  • Codex routing requires its supported custom-provider configuration; an OPENAI_BASE_URL variable alone is not sufficient for the documented CLI version.

Project status and support

  • Maturity: public development source for macOS 14+.
  • Local contract: local inspection, normalized transcript rendering, search, and supported local resume.
  • Managed contract: team synchronization, retained history, organization policy, and supported release operation remain separate.
  • Issues: `wisent-ai/oko`.
  • Security and privacy: use private GitHub Security Advisories; never attach transcripts, prompts, tool results, peer metadata, credentials, or production endpoints to a public issue.
  • Licence: no repository licence file is currently present. Do not infer a redistribution grant until dependency and ownership review is complete. Oko Desktop provides the signed Oko.app macOS interface and its independent Sparkle release channel. Updating Oko Desktop does not replace oko-cli or oko-router-proxy; updating Oko does not replace Oko.app.