Home

giogio / goko

public
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

chore: sync tree with beta-rune after rebasing onto main

56b5faaby asta-nguyen2 days ago

README.md

Goko

Goko is a cross-platform desktop app (macOS, Linux and Windows) for running interactive command-line agents by project. The native Rune app (apps/rune) talks to the Rust gokod daemon, which owns the terminal processes. Project and session metadata is stored separately in SQLite. See ARCHITECTURE.md for how the pieces fit together.

Layout

Path What it is
apps/rune The native app (Cargo package goko-rune): UI, terminal, editor
crates/daemon gokod, the daemon that owns every PTY and child process
crates/protocol Wire messages and framing shared by the app and gokod
crates/app-core goko.db store, Git/worktrees, agents, ACP, language servers

Prerequisites

  • Rust stable, installed with rustup.
  • macOS: Xcode Command Line Tools (xcode-select --install).
  • Linux: a C toolchain, git, and the X11/Wayland and GPU (Vulkan or OpenGL) libraries that winit/wgpu need.
  • Windows: MSVC build tools and git.

No Node, pnpm or other toolchain is needed.

Build

cargo build --workspace            # debug
cargo build --workspace --release  # release

Binaries land in target/{debug,release}/: goko-rune (the app) and gokod (the daemon).

Run locally

The app starts gokod itself when no daemon answers on the socket, so you never start the daemon by hand (to run it alone: cargo run -p daemon; gokod --version prints its version, and a second instance prints gokod: already running and exits). It looks for gokod beside its own executable (override with GOKO_DAEMON_BIN), so build the whole workspace first.

macOS

A bare binary opens no window on macOS, so cargo run -p goko-rune is not enough. Use the bundle script: it builds the workspace, assembles target/Goko.app with gokod beside it, kills any running instance, and launches the new build.

apps/rune/run-macos.sh          # release build (default)
apps/rune/run-macos.sh debug    # faster build, slower app

Linux

cargo build --workspace --release
target/release/goko-rune

Windows

Not buildable yet: the daemon and its client currently use Unix domain sockets, flock and process groups (killpg), so the workspace only compiles on macOS and Linux. Windows needs a port of those parts (named pipe or TCP transport, a lock file, job objects) before it can run.

Data and logs

App data lives in $GOKO_HOME, default ~/Library/Application Support/Goko (on every platform for now: the default is not yet per-OS, so set GOKO_HOME on Linux if you want an XDG path): goko.db, daemon.sock, daemon.token, daemon.lock and daemon.log.

Keep development data separate from your normal data with a throwaway home:

GOKO_HOME=/tmp/goko-dev apps/rune/run-macos.sh   # Linux: GOKO_HOME=/tmp/goko-dev target/release/goko-rune

A fresh home gets its own daemon, so it never touches sessions in your real one. To reset everything, quit Goko and delete that directory.

Checks

cargo test --workspace                     # protocol, daemon and app tests
cargo fmt --check
cargo clippy --workspace -- -D warnings

The daemon integration tests start the real gokod in a temporary GOKO_HOME.

Distribution

There are no installers yet. On macOS, target/Goko.app is an unsigned local bundle, fine for your own machine; sharing it needs Developer ID signing and notarization first. On Linux, ship goko-rune and gokod together in one directory.

Clone

git clone https://git.open-git.com/giogio/goko.git

About

Visibilitypublic
Branches5
Commits55
ChecksNone
Created11/10/2026
Age
2 days

Languages

  • Rust31.3%
  • CSV24.1%
  • JSON18.3%
  • Markdown16.4%
  • Python6.0%
  • LOCK1.6%

Contributors2

  • asta-nguyen
  • giogiothaitainguyen336