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
Sessionobject 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.
Use the core
Section titled “Use the core”cmake -S . -B build/core -G Ninja -DUBIQUITTY_FRONTEND=Core -DUBIQUITTY_QUIC=OFFcmake --build build/core --target ubiquitty-coreSamples/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.
Before you embed
Section titled “Before you embed”- 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.
Ubiquitty and this site are copyright © 2026 Stanislav Yaglo. Ubiquitty is licensed under the Apache License 2.0.
Apple, iPad, iPadOS, iPhone, Keychain, Mac, macOS, Metal, Swift and Xcode are trademarks of Apple Inc., registered in the U.S. and other countries and regions.