AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
A routine editor that out-engineers the big IDEs, transactional-safe DDL, an ERD, dual-pane SFTP, and on-device AI — SwiftUI + AppKit over a Rust core.
Developer toolsSwift · RustGitHub @asmuelleOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
pgAgent — native macOS & iPadOS PostgreSQL & SSH workspace: terminal, SFTP, and database tooling over a memory-safe Rust core bridged to Swift with UniFFI.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Native macOS / iPadOS SSH workspace. AppKit + SwiftUI shell, SwiftTerm for the PTY, ssh-commander-core for the protocol layer, uniffi for the FFI bridge.
• Apple silicon Mac on macOS 27+ with Xcode 27+ (Swift 6.4+) and command-line tools (xcode-select --install) — the apps deploy at macOS 27 / iOS 27
• PostgreSQL 14+ for database connections and fleet monitoring
• Rust 1.95+ (edition 2024) — rustup default stable
• just — brew install just
• xcodegen — brew install xcodegen (auto-installed by just mac-bootstrap)Read the full README ↗Native macOS / iPadOS SSH workspace. AppKit + SwiftUI shell, SwiftTerm for the PTY, ssh-commander-core for the protocol layer, uniffi for the FFI bridge.
| Layer | Lives in | Notes |
|---|---|---|
| App shell | PgAgentApp/, PgAgentMobile/ | AppKit window + SwiftUI views, SwiftTerm |
| Swift framework | Sources/PgAgentMacOS/ | Cross-target models, stores |
| FFI bridge | src/ | Rust → Swift via uniffi proc-macros |
| Generated bindings | bindings/ | midnight_ssh.swift, midnight_sshFFI.h, module.modulemap |
| Protocol layer | crates.io: ssh-commander-core, ssh-commander-pg-parquet | external |
| Xcode project | Mc-Ssh.xcodeproj | generated from project.yml by xcodegen |
xcode-select --install) — the apps deploy at macOS 27 / iOS 27rustup default stablejust — brew install justxcodegen — brew install xcodegen (auto-installed by just mac-bootstrap)Verified backup and restore jobs run on the profile's SSH execution host. That
host needs compatible pg_dump / pg_restore / psql binaries and a mode-0600
~/.pgpass entry. Direct managed-cloud databases can use a small SSH runner or
jump host with network access to the provider endpoint.
just bootstrap # one-time: xcodegen + macOS + iOS Rust targets
# Native macOS app (ad-hoc signed, opens Finder window)
just mac-build
just mac-run
# iPad simulator (boots a sim, installs, launches)
just run-on-ipad-sim "iPad Pro"
# Physical iPad connected over USB/Wi-Fi (auto-provisions, installs, launches)
just run-on-ipad Dashboard
# Full local CI pass
just ci-local
Run just (no args) for the full recipe list.
# 1. Edit src/ffi.rs or src/lib.rs
# 2. Regenerate Swift bindings
just mac-bindings
# 3. Rebuild
just mac-build
The bindings under bindings/ are committed — regenerate and commit them whenever the FFI changes. Hand-patching bindings/midnight_ssh.swift will appear to work but the per-function uniffi checksums will diverge from what the Rust lib reports at runtime, and rshellInit() will panic with _assertionFailure.
project.ymljust mac-gen # regenerate Mc-Ssh.xcodeproj
The xcodeproj is gitignored — mac-gen is automatic before any mac-* build via _ensure-xcodeproj.
export APPLE_SIGNING_IDENTITY="Developer ID Application: Your Name (TEAMID)"
export APPLE_ID="…"
export APPLE_TEAM_ID="…"
export APPLE_APP_SPECIFIC_PASSWORD="…"
just mac-release true # build → DMG → notarize → staple
For a build-only DMG without notarization, drop the env vars and run just mac-release (defaults to false).
just mac-sparkle-keygen # one-time, populate Info.plist with the public key
just mac-sparkle-appcast ./dist # generate appcast.xml from a folder of DMGs
.
├── Cargo.toml # FFI crate manifest
├── build.rs # uniffi build hook
├── uniffi-bindgen.rs # bindgen entry point (cargo run --bin uniffi-bindgen)
├── src/ # Rust FFI bridge (bridge.rs, ffi.rs, monitor.rs)
├── bindings/ # generated Swift bindings (committed)
├── project.yml # XcodeGen manifest (single source of truth)
├── Mc-Ssh.xcodeproj/ # generated; gitignored
├── Package.swift # SPM wrapper around the static lib
├── Sources/PgAgentMacOS/ # cross-target Swift framework (models + stores)
├── PgAgentApp/ # macOS app target — SwiftUI views + managers
├── PgAgentMobile/ # iPadOS / iOS app target
├── Tests/ # XCTest harness (PgAgentMacOS + PgAgentApp + Beta smoke)
├── scripts/ # release, notarize, find-sparkle-tool helpers
├── justfile # command surface
├── README.md # you are here
├── AGENTS.md # AI-agent code tour
└── TOOLS.md # in-app feature catalog
error: There is no XCFramework found at .../Sparkle.xcframework — stale Xcode SourcePackages cache pinned to the old absolute path. Wipe and regenerate:
rm -rf build .build Mc-Ssh.xcodeproj
just mac-gen
just mac-build
Thread 3 Crashed: rshellInit() → _assertionFailure — uniffi binding checksums don't match the rebuilt Rust lib. Always regenerate via just mac-bindings after touching the FFI; never hand-edit the generated Swift.
Build is slow on first run — russh and parquet (transitive via ssh-commander-pg-parquet) compile from source. Subsequent incremental builds are fast.