About apic
apic is a lightweight, Git-friendly CLI and TUI for designing, validating, and collaborating on API contracts as plain text you can diff and review.
A lightweight, Git-friendly CLI tool for designing and collaborating on API contracts.
apic is a lightweight, Git-friendly CLI and TUI for designing, validating, and collaborating on API contracts as plain text you can diff and review.
A packaging release on top of 0.5.0, plus one change to how the git panel presents a diff. The CLI, the TUI, and the contract format are unchanged, so existing projects need no migration.
Installable from apt on Ubuntu
packaging/debian/ builds apic and apic-gui as .deb packages for Ubuntu 26.04 on amd64 and arm64, published through the PPA ppa:rizukirr/apic.
Unlike the AUR and Copr packages, which ship prebuilt binaries, Launchpad compiles from source on builders with no network access. mk-orig.sh vendors all 566 crate dependencies into the orig tarball and verifies the vendor tree is internally consistent before writing it. apic-gui now declares the git runtime dependency it has always needed.
Getting there meant moving eframe and egui_extras back to 0.35 and dropping the declared MSRV from 1.97 to 1.92. epaint 0.36.1 requires Rust 1.95, while Ubuntu 26.04 ships 1.93 as its newest archive toolchain, which put the desktop GUI out of reach of the current LTS. The downgrade needed no source change and the full suite passes on 1.92.
A new msrv job in CI builds and tests the workspace on the minimum supported version, so a routine dependency bump cannot silently push the project past what the Ubuntu archive can compile.
Git panel:field list first, real diff behind the toggle
Selecting a changed contract now opens on its field list, which says what changed about the contract, rather than on the whole file with the changed lines tinted.
The checkbox that read Show changed fields now reads Show raw diff and gives git's own output, with hunk headers and +/- markers, instead of the entire file. It stays where you put it when you click a different file rather than resetting each time.
Anything the field list cannot describe falls through to the diff:a non-contract file, an untracked file, or a change that is only formatting. A selection never lands on an empty pane.
One fix underneath this. The diff renderer kept only the first hunk header and printed every later one a character short, which nothing noticed while the panel asked git for the whole file as a single hunk. It now keeps the markers git emits and colors each @@ header.
Install
Prebuilt binaries for Linux, macOS, and Windows are attached below, each with a .sha256. The desktop GUI also ships as a macOS .app bundle and a Windows MSI.
…
| Publisher | Rizki Rakasiwi |
|---|---|
| Version | 0.5.1 |
| License | MIT |
| Installer type | zip |
| Architecture | x64 |
| Package ID | rizukirr.apic |
winget install --id=rizukirr.apic -ewinget upgrade --id=rizukirr.apic -ewinget uninstall --id=rizukirr.apic -eThe desktop GUI gains a git panel. The CLI, the TUI and the contract format are unchanged, so existing projects need no migration and nothing has to be updated to keep working.
Git panel in the desktop GUI
A second sidebar tab, next to Explorer, that appears when the project sits inside a git repository. It shells out to your own git, so hooks, credential helpers and config behave exactly as they do in a terminal.
Status and staging. Changed files listed under CONFLICTS, STAGED and UNSTAGED, nested by folder like the Explorer tree, scoped to your contract working directory plus .apic/. Changes elsewhere in the repository are counted on a line you can expand rather than hidden. Stage, unstage and discard with +, - and x on any file or folder, then commit. Discard is offered for tracked files only and always names what it will revert.
Diffs. Selecting a file shows it whole with changed lines coloured. A toggle switches to a field-level summary that names each changed field and its old and new value, which is the better view for a schema change buried in a large contract.
Branches. A dropdown lists every local branch. Picking one checks it out, + creates one, x deletes one behind a confirmation. Deleting is never forced, so git's refusal to drop unmerged work is surfaced rather than overridden. …
apic 0.4.1
A maintenance release on top of 0.4.0. There are no contract format changes and no new commands, so existing 0.4.0 projects keep working untouched and no migration step is needed.
The substance of this release is the eframe/egui 0.35 upgrade behind the desktop GUI, a dependency refresh across the whole workspace, and a higher minimum supported Rust version. If you only use the CLI/TUI (apic), this is a drop-in update with refreshed dependencies underneath.
Desktop GUI moves to eframe/egui 0.35
apic-gui now builds on eframe/egui 0.35, up from 0.33.3, including the Windows-only wgpu (DirectX) renderer feature that lets the GUI launch in driverless environments such as VMs, RDP sessions, and winget's validation sandbox. Getting there meant following three breaking changes in egui:
Yes. apic is free and open-source software released under the MIT license.
The latest version is 0.5.1.
The download button links to the official installer published on github.com, the same file Windows Package Manager installs. You can verify the downloaded file by comparing its SHA-256 checksum with f167388b57354640845343195375c68118753ecaca2f6ff398eeb83d2210eaad.
apic runs on Windows and is available for 64-bit (x64) systems.
Open Settings › Apps › Installed apps, find apic and select Uninstall. From the command line, run winget uninstall --id=rizukirr.apic -e.
Yes. apic is available as a portable ZIP archive (apic-v0.5.1-x86_64-pc-windows-msvc.zip, 64-bit (x64)) that runs without installation. Copy it to any folder or USB drive and run it from there.