Zyquo Agent # Zyquo Agent ### **The autonomous agent that actually operates your Mac.** *Plans. Runs real commands. Verifies its own work. Asks before anything risky.*
[![Release](https://img.shields.io/github/v/release/spboucher-ai/zyquo-agent?style=for-the-badge&color=7A5AF0&labelColor=1B1A20)](https://github.com/spboucher-ai/zyquo-agent/releases/latest) [![Platform](https://img.shields.io/badge/platform-macOS%2013%2B-7A5AF0?style=for-the-badge&labelColor=1B1A20&logo=apple)](https://www.apple.com/macos/) [![Swift](https://img.shields.io/badge/Swift-6.0-F05138?style=for-the-badge&labelColor=1B1A20&logo=swift&logoColor=white)](https://swift.org) [![License](https://img.shields.io/badge/license-MIT-2FA36B?style=for-the-badge&labelColor=1B1A20)](LICENSE) [![Downloads](https://img.shields.io/github/downloads/spboucher-ai/zyquo-agent/total?style=flat-square&color=7A5AF0&labelColor=2E2A3A&label=downloads)](https://github.com/spboucher-ai/zyquo-agent/releases) [![Notarized](https://img.shields.io/badge/Gatekeeper-Notarized%20Developer%20ID-2FA36B?style=flat-square&labelColor=2E2A3A)](#-installation) [![Universal](https://img.shields.io/badge/binary-Universal%20(arm64%20%2B%20x86__64)-7A5AF0?style=flat-square&labelColor=2E2A3A)](#-building-from-source) [![Providers](https://img.shields.io/badge/providers-12-9B82F6?style=flat-square&labelColor=2E2A3A)](#-providers--models) [![Models](https://img.shields.io/badge/models-170%20(77%20agent--verified)-9B82F6?style=flat-square&labelColor=2E2A3A)](docs/VERIFICATION.md) [![Tool calling](https://img.shields.io/badge/tool--calling-77%2F80%20live%20verified-2FA36B?style=flat-square&labelColor=2E2A3A)](docs/VERIFICATION.md) [![Safety tests](https://img.shields.io/badge/safety%20tests-8%2F8-2FA36B?style=flat-square&labelColor=2E2A3A)](docs/EVALUATION.md) [![No Xcode](https://img.shields.io/badge/built%20with-SwiftPM%20only-D9822B?style=flat-square&labelColor=2E2A3A)](#-building-from-source)
**[⬇️ Download the DMG](https://github.com/spboucher-ai/zyquo-agent/releases/latest)** Β· **[πŸ“– Docs](docs/)** Β· **[πŸ”¬ Verification report](docs/VERIFICATION.md)** Β· **[πŸ§ͺ Evaluation report](docs/EVALUATION.md)**

---
## πŸ“‹ Table of Contents - [✨ What is Zyquo Agent?](#-what-is-zyquo-agent) - [πŸ–ΌοΈ Screenshots](#️-screenshots) - [πŸš€ Features](#-features) - [The agent engine](#the-agent-engine) - [The tools it can actually use](#the-tools-it-can-actually-use) - [Safety: the headline feature](#-safety-the-headline-feature) - [Workspaces](#-workspaces) - [Memory & context compaction](#-memory--context-compaction) - [The command-center interface](#-the-command-center-interface) - [Productivity](#-productivity) - [πŸ€– Providers & Models](#-providers--models) - [πŸ’Ύ Installation](#-installation) - [βš™οΈ Requirements](#️-requirements) - [πŸ“– Usage](#-usage) - [Your first task](#your-first-task) - [Choosing a safety mode](#choosing-a-safety-mode) - [Keyboard shortcuts](#keyboard-shortcuts) - [The command-line interface](#the-command-line-interface) - [πŸ”¨ Building from Source](#-building-from-source) - [πŸ—οΈ Architecture](#️-architecture) - [πŸ”¬ Verification & Evaluation](#-verification--evaluation) - [πŸ—ΊοΈ Roadmap](#️-roadmap) - [🀝 Contributing](#-contributing) - [πŸ“„ License](#-license) - [πŸ‘€ Author](#-author)
---
## ✨ What is Zyquo Agent? **Zyquo Agent** is a native macOS app that turns cloud LLMs into an agent that *does things on your Mac* β€” it runs `bash` commands, drives other apps with AppleScript, reads and writes files, and keeps iterating until the task is genuinely done. It is not a chat window with a shell attached. It is a real **plan β†’ act β†’ observe β†’ reflect** loop: ``` you describe a task ↓ the agent drafts a checklist β†’ shown live in the Plan panel ↓ it calls a tool (bash / osascript / file ops) ↓ β—† every action passes a policy gate β†’ risky ones stop and ask YOU ↓ it reads the actual result, revises the plan, and continues ↓ it verifies its own work with tools before declaring "done" ``` Everything is visible while it happens: streamed thinking, the exact command about to run, live `stdout`/`stderr`, exit codes, plan check-offs, token/time budgets β€” and an **append-only audit log** of every single action it took. Zyquo Agent is the agentic member of the **Zyquo** family (**Zyquo Cloud** β€” chat client Β· **Zyquo Local** β€” on-device models Β· **Zyquo Agent** β€” this). It reuses Cloud's provider layer and encrypted key vault, so your keys and model list feel identical across the family. > **Built entirely without the Xcode IDE** β€” Swift Package Manager and the command-line toolchain only.
---
## πŸ–ΌοΈ Screenshots
### The command center at rest Zyquo Agent empty state

### A real run: step cards, live terminal feed, budget meters Zyquo Agent live run *The agent wrote a file, then verified it with `list_dir` and `read_file` before answering. The drawer streams every action as it happens; the right panel tracks steps, tokens, and time against your budgets.*

### Safety settings: modes, boundaries, and your own allow/deny rules Zyquo Agent safety settings

---
## πŸš€ Features ### The agent engine | | | |---|---| | πŸ”„ **True agentic loop** | A `stop_reason`-keyed while-loop (`AgentLoop`, a Swift actor): stream a model turn β†’ execute its tool calls β†’ thread the results back β†’ repeat until the model answers without calling tools. Handles truncation, refusals, and transient provider errors (one automatic retry with backoff). | | 🧠 **Reasoning-model aware** | Thinking/reasoning tokens stream into a collapsible section, separate from the answer. | | πŸ“‹ **Live editable plan** | The agent maintains a real checklist through an internal `update_plan` tool β€” items go pending β†’ active β†’ done/failed, persisted to `.zyquo/plan.json`, rendered in the Plan panel, and **editable by you** mid-run. | | ♻️ **Re-planning on failure** | A failed step doesn't derail the run: the agent self-critiques, revises the plan, and continues. (Verified end-to-end: [scenario s6](docs/EVALUATION.md).) | | πŸ›‘ **LoopGuard** | Step / token / wall-clock budgets plus **repetition** detection (same failing call 3Γ—) and **stall** detection (6 steps with no progress). On a trip it **pauses and asks you** β€” never silently spins or aborts. | | ⚑ **Streaming everything** | Text, thinking, and even partial tool-call *arguments* stream live, so you watch the command being composed before it runs. | | ⏹️ **Real cancellation** | ⌘. (or SIGINT on the CLI) cancels the model stream **and kills the running child process** (SIGTERM β†’ SIGKILL), recording a `cancelled` outcome. Verified by test. | ### The tools it can actually use | Tool | What it does | |---|---| | `bash` | Runs commands via `/bin/bash -lc` with the workspace as cwd. Line-by-line `stdout`/`stderr` streaming, per-command timeout, exit code capture, 200 KB output cap with truncation notice, fully cancellable. | | `osascript` | Executes AppleScript to automate macOS apps (Finder, Notes, Mail, Calendar, System Events…). Detects TCC denials and explains how to grant Automation access. | | `read_file` | Reads a file with offset/limit paging (50 KB per call cap). | | `write_file` | Creates or overwrites a file, tracked in the workspace. | | `edit_file` | Exact-unique string replacement β€” **fails loudly** if the target text matches zero or multiple times, so edits can't silently hit the wrong line. | | `list_dir` | Directory listing with optional depth. | | `search_files` | Grep-like content search returning `file:line` matches, capped. | | `update_plan` | Internal (never touches the policy gate) β€” how the agent maintains its checklist. | Adding a tool is deliberately trivial: conform to the `Tool` protocol (name, description, JSON-Schema parameters, `execute`) and register it in `ToolRegistry`. ### πŸ›‘οΈ Safety: the headline feature This is the part most agent tools treat as an afterthought. **Three modes, switchable per task, always visible in the header:** | Mode | Behavior | |---|---| | **Manual** | Every gated action asks first. | | **Guarded** *(default)* | Curated read-only commands and in-workspace file writes run automatically; anything mutating asks. | | **Autonomous** | Runs freely within budget β€” **except** the always-ask class, which still asks. | **The gate itself** (`PolicyEngine`, a Swift actor) evaluates `deny β†’ ask β†’ allow`, **per subcommand**: - πŸ” **Commands are parsed, not pattern-matched.** Compound lines split on `&&`, `||`, `;`, `|` and newlines (quote-aware); `$(…)`/backtick substitutions are extracted and classified too; wrappers (`env`, `nohup`, `time`, `xargs`, `nice`) are stripped first. The verdict is the **most severe** across all subcommands β€” `ls && rm -rf ~/x` asks, because the second half asks. - β›” **Hard denies** that no approval can unlock: `rm -rf /` and equivalents, fork bombs, `mkfs`, `diskutil eraseDisk`, writes to `/System`. - ⚠️ **Always-ask circuit breakers, in *every* mode including Autonomous:** any `sudo`, `rm -rf` outside the workspace, `curl … | sh`, overwrites outside the workspace, `kill`/`pkill`, `defaults write`, `launchctl`, `csrutil`, `chmod -R` outside the workspace, writes to `/Library` `/usr` `/etc`, `git push --force`, `shutdown`, `security`, and AppleScript containing `with administrator privileges`. - 🚫 **`sudo` is never run silently.** Ever. Proven by a test that *forces* a `sudo` tool call and confirms denial in all three modes. - βœ… **Inline approval cards** show the exact payload, the risk level and reason, the cwd, and the agent's stated intent β€” with **Approve**, **Approve & Remember**, **Edit** (re-classified after your edit), and **Deny**. - πŸ“ **"Approve & remember"** stores the *narrowest* token-prefix rule (`brew list` matches `brew list --versions`, never `brew install`) β€” and a remembered rule can **never** override a circuit breaker. - πŸ“œ **Append-only audit log** (`.zyquo/audit.jsonl`) records every executed action: timestamp, kind, exact payload, cwd, ruling, exit code, truncated output. Viewable in-app, exportable. Pattern matching is treated as UX, not a security boundary β€” it's paired with workspace scoping, human approval, and a complete audit trail. ### πŸ“ Workspaces Every task gets its own directory under `~/Library/Application Support/ZyquoAgent/Workspaces/`. `bash` runs there; file tools are scoped there by default and **escaping requires explicit approval**. Created and modified files are tracked with badges, checkpoints can snapshot the agent's work, and reopening an old task restores its workspace and full step history. ### πŸ—œοΈ Memory & context compaction Long autonomous runs don't fall off the context window: - Live token accounting, calibrated by the provider's own usage numbers. - At **85%** of the model's context, older completed steps are summarized into one compact record by the *same* model (with a mechanical fallback) β€” while the task, the plan, `MEMORY.md`, and the **most recent 6 steps stay verbatim**. A thrash guard enforces a minimum gap between compactions. - πŸ“€ **Output offloading:** any tool result over 8 KB is written to `.zyquo/outputs/` and replaced in-context by its first ~40 lines plus a path the agent can re-read on demand. - πŸ“Œ **`MEMORY.md`** lives in the workspace root and is owned by the agent β€” it records durable facts that survive compaction *and* whole sessions. *Verified live: a task that triggered **4 compactions** still produced a fully correct result.* ### πŸ–₯️ The command-center interface - **Sidebar** β€” tasks grouped Pinned / Today / Yesterday / Previous 7 Days / Older, each with an animated status pill (Planning Β· Running Β· Awaiting approval Β· Done Β· Failed), model badge, and a live activity indicator. - **Conversation column** β€” your prompts as bubbles; the agent's work as **step cards**: thought line, tool chips, the exact command in monospace, color-coded streaming output, exit codes, expandable truncation, collapsible thinking, and inline approval / guard-trip / compaction cards. Final answers render as full Markdown with syntax-highlighted code. - **Plan panel** β€” the live checklist with animated check-offs, a progress bar, and step/token/time meters against your budgets. - **Activity drawer** β€” three tabs: **Live** (raw streaming terminal feed with cwd), **Audit Log** (every executed action), **Files** (workspace tree with created/modified badges, preview, reveal in Finder). - **Header** β€” editable title, model picker (all 170 models, agent-capable ones emphasized), the safety-mode segmented control, workspace chip, export, and an info popover showing the actual system prompt and budgets. - Light theme is the flagship; a deep plum-charcoal dark theme is derived from the same tokens. Five accent colors. ### 🎯 Productivity - πŸ“š **29 built-in task templates** across 6 categories β€” Files & Folders (6), Development (6), Automation/AppleScript (5), Data (4), System Info (4), Writing (4) β€” with `{{variable}}` fill-in. Plus your own. - 🎭 **Personas** β€” a system-prompt addendum, preferred model, and default safety mode, applied per task. - ⚑ **Quick Task panel** (βŒ₯Space) β€” a Spotlight-style floating panel that runs a one-off task and can be promoted to a full task. - πŸ” **⌘K command palette** β€” fuzzy search over tasks, templates, and actions. - πŸ“€ **Export** transcripts to Markdown or PDF Β· πŸ”Ž full-text search across all tasks Β· 🏷️ auto-generated task titles Β· πŸ”” menu bar extra showing running-task status. - πŸ” **Encrypted key vault** β€” AES-256-GCM, HKDF-derived and machine-bound, stored at `~/Library/Application Support/ZyquoAgent/vault.zq`. **Deliberately not the Keychain**, matching the rest of the Zyquo family. Environment variables take precedence at run time.
---
## πŸ€– Providers & Models Zyquo Agent ships the same **170-model catalog** as Zyquo Cloud across **12 providers**, and marks the ~80-model subset that's genuinely suited to multi-step agentic work (strong reasoning + reliable native function calling + adequate context). | Provider | Provider | Provider | |---|---|---| | 🟒 OpenAI | 🟣 Anthropic | ⚫ xAI | | 🟠 Mistral | πŸ”΅ Google Gemini | 🟑 Alibaba Qwen | | πŸ‹ DeepSeek | πŸŒ™ Kimi (Moonshot) | πŸ” Perplexity | | 🀝 Together AI | ☁️ DeepInfra | ⚑ Cerebras | Plus **custom OpenAI-compatible endpoints**. Two clients cover everything: a native `AnthropicClient` (`/v1/messages`, `tool_use`/`tool_result` blocks, `input_json_delta` streaming) and one `OpenAICompatibleClient` (index-keyed `tool_calls` deltas, `role:"tool"` messages) β€” normalized behind a single `ProviderClient` protocol so the agent loop never sees a wire format. **Every agent-capable model was verified live**, not assumed: **77 of 80 pass** the full battery β€” receives the schema, emits a valid *streamed* tool call, consumes a threaded `tool_result`, and produces a correct final answer. Full per-model table with latencies: **[docs/VERIFICATION.md](docs/VERIFICATION.md)**. Two real provider quirks were found and fixed in the process: - **Gemini 3+ thought signatures** β€” Gemini rejects a threaded tool result if the originating call's opaque `thought_signature` isn't echoed back verbatim; it's now captured and round-tripped. - **OpenAI GPT-5.4+** β€” `/chat/completions` refuses function tools unless `reasoning_effort` is `none`; the client now downgrades it automatically when tools are attached. The 3 remaining failures are external and documented: DeepInfra's two Gemini re-hosts strip Google's required signature (the same models work via the native Gemini provider), and `kimi-k3` is capacity-throttled upstream. Default agent model: **`claude-sonnet-5`**. > πŸ”‘ **Bring your own keys.** Zyquo Agent ships with none and talks only to the providers you configure.
---
## πŸ’Ύ Installation ### Option 1 β€” Download the DMG *(recommended)*
### **[⬇️ Download Zyquo Agent 1.0.0](https://github.com/spboucher-ai/zyquo-agent/releases/latest/download/ZyquoAgent.dmg)**
1. Download `ZyquoAgent.dmg` from the [latest release](https://github.com/spboucher-ai/zyquo-agent/releases/latest). 2. Open it and drag **Zyquo Agent** to your **Applications** folder. 3. Launch it. **No Gatekeeper warning, no right-click-to-open workaround** β€” the app is signed with a Developer ID, notarized by Apple, and stapled: ```console $ spctl -a -vv "/Applications/Zyquo Agent.app" /Applications/Zyquo Agent.app: accepted source=Notarized Developer ID origin=Developer ID Application: Simon-Pierre Boucher (3YM54G49SN) ``` 4. Open **Settings β†’ Providers & Keys** (⌘,) and paste at least one API key. ### Option 2 β€” Build from source See [Building from Source](#-building-from-source). ### First-run permissions The first time the agent runs AppleScript against another app, macOS asks for **Automation** permission. If you deny it, grant it later in **System Settings β†’ Privacy & Security β†’ Automation**; the app explains this inline when it hits a TCC denial.
---
## βš™οΈ Requirements | | | |---|---| | **macOS** | 13.0 Ventura or later | | **Architecture** | Apple Silicon *or* Intel β€” the release is a Universal binary (`arm64` + `x86_64`) | | **Disk** | ~15 MB for the app, plus whatever your task workspaces use | | **API key** | At least one from a supported provider (BYOK β€” none included) | | **Network** | Only to the providers you configure | | **To build** | Swift 6 command-line toolchain. The **Xcode IDE is not required**; `rsvg-convert` (Homebrew) only if you regenerate the icon. | Runtime dependency: exactly one β€” [`swift-markdown`](https://github.com/swiftlang/swift-markdown) for rendering. Everything else is Foundation, SwiftUI, AppKit, and CryptoKit.
---
## πŸ“– Usage ### Your first task 1. Press **⌘N** (or click **New Task**). 2. Pick a model, and a safety mode β€” **Guarded** is a sensible default. 3. Describe the outcome you want, not the commands. Press **βŒ˜β†©**. 4. Watch it work. When an approval card appears, read the command, then **Approve**, **Edit**, or **Deny**. Good first tasks (all shipped as templates): ``` Organize my Downloads folder by file type into subfolders Set up a Python project with a venv, add pytest, and run the tests Find every file over 100 MB in this folder and summarize what's using space Batch-rename these screenshots to a YYYY-MM-DD-description pattern Read this CSV and give me totals per category Export my Notes to Markdown files ``` ### Choosing a safety mode | If you… | Use | |---|---| | are trying it out, or the task touches anything you care about | **Manual** | | want it to move but keep your hand on anything mutating | **Guarded** βœ… | | have a long, well-understood, low-stakes task | **Autonomous** | In all three, destructive and elevated actions **still** require your approval. ### Keyboard shortcuts | Shortcut | Action | | Shortcut | Action | |---|---|---|---|---| | `⌘N` | New task | | `⌘K` | Command palette | | `βŒ˜β†©` | Run | | `⌘F` | Search tasks | | `⌘.` | Stop | | `βŒ˜β‡§A` | Open audit log | | `βŒ₯Space` | Quick Task panel | | `βŒ˜β‡§E` | Export transcript | | `⌘,` | Settings | | | | ### The command-line interface The app binary doubles as a headless CLI β€” useful for scripting and CI: ```bash BIN="/Applications/Zyquo Agent.app/Contents/MacOS/ZyquoAgent" # Run a task headlessly, with live rendering and stdin approval prompts "$BIN" --run "summarize the largest files in this folder" \ --model claude-sonnet-5 --mode guarded --workspace ~/scratch --max-steps 20 # Scripted runs: auto-approve mode-driven prompts. # NOTE: --yes never auto-approves the always-ask class β€” those are auto-DENIED # unless you additionally pass --allow-destructive. "$BIN" --run "…" --yes "$BIN" --load-vault # import provider keys from environment variables "$BIN" --verify # live tool-calling verification across the catalog "$BIN" --verify-policy # PolicyEngine safety self-check (38 assertions) "$BIN" --run-mock # offline engine smoke test, no keys or network ``` Keys resolve from the environment first (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`, …), then the encrypted vault.
---
## πŸ”¨ Building from Source ```bash git clone https://github.com/spboucher-ai/zyquo-agent.git cd zyquo-agent make dev # release build β†’ dist/Zyquo Agent.app (ad-hoc signed) β€” fast iteration make run # build, bundle, and launch make icon # regenerate AppIcon.icns from assets/icon/zyquo-agent.svg make clean ``` Plain SwiftPM works too: ```bash export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX26.sdk swift build -c release ```
Why SDKROOT is pinned
SDK 27 declares SwiftUI's `@State` and friends as *macros*, and the macro plugin (`libSwiftUIMacros.dylib`) ships only with the full Xcode install. SDK 26 keeps the property-wrapper forms, so a Command-Line-Tools-only toolchain can build the whole app. The `Makefile` sets this for you.
Producing a signed, notarized release
`make release` builds a Universal binary (`arm64` + `x86_64` via `lipo`), assembles the bundle, then signs, notarizes, staples, and verifies it. It requires your own Developer ID certificate and a `notarytool` keychain profile β€” edit `IDENTITY` and `NOTARY_PROFILE` in the `Makefile`. ```bash make release # app: sign β†’ notarize β†’ staple β†’ spctl scripts/notarize.sh "dist/Zyquo Agent.app" "" "" \ Resources/ZyquoAgent.entitlements dmg # …and a notarized DMG ``` The script **fails loudly** unless `spctl` reports `source=Notarized Developer ID`. > ⚠️ Keep `Resources/ZyquoAgent.entitlements` pure ASCII with no XML comments β€” the AMFI parser `codesign` uses rejects both.
Running the checks
```bash .build/release/ZyquoAgent --verify-policy # 38 safety assertions .build/release/ZyquoAgent --run-mock # offline end-to-end engine test .build/release/ZyquoAgent --run-ui-smoke # UI state-machine test scripts/agent-eval.sh all # full live scenario + safety suite (needs keys) ``` `swift test` requires an XCTest-capable toolchain; the XCTest files are there for Xcode/CI, and the executable checks above are the equivalents that run anywhere.

---
## πŸ—οΈ Architecture **82 Swift files, ~19,000 lines**, no Xcode project file. ``` Sources/ZyquoAgent/ β”œβ”€β”€ App/ @main, CLI modes, SwiftUI shell, menu bar (5 files) β”œβ”€β”€ Agent/ AgentLoop Β· Planner Β· MemoryManager Β· LoopGuard β”‚ Transcript Β· AgentStep Β· AgentEvent Β· prompt (8 files) β”œβ”€β”€ Tools/ Tool protocol Β· ToolRegistry Β· ShellTool β”‚ AppleScriptTool Β· FileTools (5 files) β”œβ”€β”€ Execution/ ExecutionService Β· PolicyEngine Β· AuditLog (4 files) β”œβ”€β”€ Workspace/ WorkspaceManager (1 file) β”œβ”€β”€ Providers/ ProviderClient Β· Anthropic Β· OpenAI-compatible (4 files) β”œβ”€β”€ Models/ ToolSpec/ToolCall/ToolResult Β· AgentTask β”‚ catalog types Β· templates (9 files) β”œβ”€β”€ Services/ ModelCatalog Β· SecureKeyStore Β· Streaming (6 files) β”œβ”€β”€ ViewModels/ TaskStore Β· RunController Β· approval bridge (8 files) β”œβ”€β”€ Views/ Command center, settings, palette, Markdown (25 files) β”œβ”€β”€ DesignSystem/ ZyquoTheme tokens, components, glyph (4 files) └── Verify/ Live provider verification harness (1 file) ``` **Design rules that hold throughout:** - `AgentLoop`, `ExecutionService`, `PolicyEngine`, `AuditLog`, and `WorkspaceManager` are **actors**; structured concurrency everywhere; every long operation is cancellable. - Shell execution **never** leaks into views or view models β€” it lives behind `ExecutionService`, and everything passes `PolicyEngine` first. - The UI renders exclusively from an `AgentEvent` stream and the persisted `Transcript`. - Every color, font, spacing, and radius comes from `ZyquoTheme` tokens β€” no raw hex in views. The architecture traces directly back to research documented in **[docs/AGENT-RESEARCH.md](docs/AGENT-RESEARCH.md)** (413 lines, 79 cited sources), and the provider layer to **[docs/PROVIDER-REUSE.md](docs/PROVIDER-REUSE.md)**.
---
## πŸ”¬ Verification & Evaluation Nothing here is claimed on vibes β€” it was measured, and the failures are documented too. | Suite | Result | Report | |---|---|---| | **Provider tool-calling** (live, every agent-capable model) | **77 / 80** green | [docs/VERIFICATION.md](docs/VERIFICATION.md) | | **End-to-end scenarios** (live, real workspaces) | **11 / 11** pass | [docs/EVALUATION.md](docs/EVALUATION.md) | | **Safety tests** (live) | **8 / 8** pass | [docs/EVALUATION.md](docs/EVALUATION.md) | | **PolicyEngine self-check** | **38 / 38** | `--verify-policy` | Scenarios cover: nested file structures, batch renaming, writing *and running* a Python script, CSV analysis checked against ground truth, largest-file discovery, **re-planning after a deliberate failure**, **forced memory compaction**, AppleScript automation, multi-tool log analysis, and cross-provider parity on a second provider. Safety tests confirm: `sudo` never executes in any mode (including a test that *forces* a sudo tool call), out-of-workspace deletes are auto-denied, cancellation kills the child process, `rm -rf /` is hard-denied, and no key material reaches any transcript, log, or workspace file.
---
## πŸ—ΊοΈ Roadmap - [ ] Enforce the two settings that are currently persisted-but-advisory: `requireApprovalForAppleScript` in Autonomous mode, and `workspaceEscapePolicy = deny` *(the engine already asks for AppleScript in Manual/Guarded and always asks on workspace escape β€” these would add stricter hooks)* - [ ] Optional **Seatbelt sandbox profile** for Autonomous runs, on top of the policy gate - [ ] Read-only **explorer sub-agent** that returns summaries without mutating state - [ ] **HTTP fetch tool** (the `Tool` protocol is built for this) - [ ] Improve auto-generated task titles β€” short prompts can produce clipped titles - [ ] Workspace **checkpoint restore** exposed in the UI - [ ] Structured exit codes and policy rulings surfaced per step card (currently in the audit log) - [ ] Re-verify `kimi-k3` when Moonshot's capacity recovers
---
## 🀝 Contributing Issues and pull requests are welcome. If you contribute code, please keep the project's conventions: 1. **Every code file starts with the standard header** (name, `Zyquo Agent`, author, mail) β€” there's a sweep that checks. 2. **Zero build warnings.** 3. **Design tokens only** β€” no raw hex values or magic numbers in views; add a token to `ZyquoTheme` if one is genuinely missing. 4. **Never bypass the safety gate.** There must be no code path that executes a shell command or AppleScript without going through `PolicyEngine`, and no action that isn't audited. 5. **Never commit secrets.** API keys belong in the vault or the environment. `.secrets/` is gitignored. 6. Before opening a PR, run: `swift build -c release`, `--verify-policy`, `--run-mock`, and `--run-ui-smoke`.
---
## πŸ“„ License Released under the **MIT License** β€” see [LICENSE](LICENSE).
---
## πŸ‘€ Author
**Simon-Pierre Boucher** [![Email](https://img.shields.io/badge/contact@spboucher.ai-7A5AF0?style=for-the-badge&logo=maildotru&logoColor=white&labelColor=1B1A20)](mailto:contact@spboucher.ai)
**The Zyquo family** β€” one design language, three characters ☁️ Zyquo Cloud *(chat)* Β· πŸ’  Zyquo Local *(on-device)* Β· ⚑ **Zyquo Agent** *(autonomous)*
Built on macOS with Swift, SwiftUI, and the command line β€” no Xcode IDE.
⭐ **If Zyquo Agent is useful to you, a star is genuinely appreciated.**