Skip to content

UbiquittyKit

Everything the Ubiquitty clients are built from is a library, in three layers:

  • libUbiquittyCore is the terminal model: feed bytes, read the cell grid, build render plans. It is a C++23 static library with no windowing, GPU or transport dependency. Its public header is UbiquittyCore/UbiquittyCore.h.
  • Transport provides carriers for SSH, QUIC and the local host socket, and the Sync client.
  • UbiquittyKit provides one Session object for a local session (an embedder-supplied PTY) or a host session, with an observer for rendering and an input sink.

The embedding guide covers dependencies and consumer examples.

Terminal window
cmake -S . -B build/core -G Ninja -DUBIQUITTY_FRONTEND=Core -DUBIQUITTY_QUIC=OFF
cmake --build build/core --target ubiquitty-core

Samples/core-consumer/main.cpp in the repository is a complete program that feeds bytes into a terminal and reads rows back. The embedder supplies a handful of platform functions (clock, diagnostics, bell, clipboard, preferences), and a headless program can stub them all. Use the public umbrella headers rather than internal implementation headers.

Swift programs use the C++ API directly through Swift’s C++ interoperability; there is no Swift package.

  • Permissions. Some core effect paths allow an operation when no permission policy is installed. Install a policy. Do so before processing untrusted terminal output.
  • Licence. UbiquittyKit is Apache-2.0, so it can be embedded in any application, paid or closed-source, keeping the licence and notices. Your product uses its own name and icon. See Licence.