zig fetch --save git+https://github.com/Jesssullivan/zig-keychain.gitThen in your build.zig:
const dep = b.dependency("zig_keychain", .{ .target = target, .optimize = optimize });
exe.root_module.addImport("zig-keychain", dep.module("zig-keychain"));git submodule add https://github.com/Jesssullivan/zig-keychain.git vendor/keychain
cd vendor/keychain && zig build -Doptimize=ReleaseFastLink (macOS): -lzig-keychain -framework Security -framework CoreFoundation
Link (Linux): -lzig-keychain $(pkg-config --libs libsecret-1 glib-2.0)
Include #include "zig_keychain.h".
- Zig 0.15.2+
- macOS: Security.framework and CoreFoundation.framework (included with Xcode/CLT)
- Linux:
libsecret-1-devandlibglib2.0-dev(Debian/Ubuntu) orlibsecret-develandglib2-devel(Fedora/RHEL)
zig build # static library
zig build -Doptimize=ReleaseFast # optimized build
zig build test # unit tests
zig build docs # generate API documentation
zig build example # build C exampleStart with issues labeled good first issue or help wanted.
Small, useful first contributions include:
- SwiftPM/modulemap smoke tests
- Objective-C bridging samples
- C header nullability annotations
- Swift wrapper examples
- Keychain Services and libsecret migration documentation
zig fmtfor formatting- All
pubandexportfunctions need///doc comments - C FFI exports go in
src/ffi.zig - Zig package exports go through
src/root.zig - Platform backends in
src/keychain_<platform>.zig - Platform dispatch in
src/keychain.zig
- Add the Zig function to
src/keychain.zigwith platform dispatch - Implement in
src/keychain_macos.zigandsrc/keychain_linux.zig - Add
export fn zig_keychain_<name>wrapper insrc/ffi.zig - Add the C declaration to
include/zig_keychain.h - Update
AGENTS.mdFFI table andllms-full.txt
Open an issue at github.com/Jesssullivan/zig-keychain/issues.