SPB Git

spb/zyquo-atlas

Public License

The AI-native macOS web browser — every surface, intelligent.

docs: ultra README (icon, badges, features, screenshots, install/build), LICENSE, macOS/Xcode .gitignore, product screenshots

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
simon-pierre boucher committed (Jul 31, 2026) parent 896420d Browse files

8 changed files +391 −41

modified .gitignore +40 −8
@@ -1,21 +1,53 @@
1−# Secrets — never commit API keys 1+# ─── Secrets — never commit API keys or vault data ───
2 .env.keys 2 .env.keys
3 *.env 3 *.env
4+*.key
5+vault.zq
4 6
5−# Swift Package Manager 7+# ─── Swift Package Manager ───
6 .build/ 8 .build/
7 .swiftpm/ 9 .swiftpm/
8 10
9−# Build products & distribution 11+# ─── Xcode ───
12+DerivedData/
13+build/
14+xcuserdata/
15+*.xcuserstate
16+*.xcscmblueprint
17+*.xccheckout
18+*.moved-aside
19+*.hmap
20+*.ipa
21+*.dSYM.zip
22+*.dSYM
23+*.pbxuser
24+*.mode1v3
25+*.mode2v3
26+*.perspectivev3
27+
28+# ─── CocoaPods / Carthage (defensive) ───
29+Pods/
30+Carthage/Build/
31+Carthage/Checkouts/
32+
33+# ─── Build products & distribution artifacts ───
10 dist/ 34 dist/
11 *.zip 35 *.zip
12 *.dmg 36 *.dmg
37+*.app
38+*.icns.tmp
13 39
14−# macOS 40+# ─── macOS ───
15 .DS_Store 41 .DS_Store
42+.AppleDouble
43+.LSOverride
44+Icon?
45+._*
46+.Spotlight-V100
47+.Trashes
48+.fseventsd
16 49
17−# Temporary 50+# ─── Temporary ───
18 *.log 51 *.log
19− 52+*.swp
20−# SwiftPM 53+*~
21−.swiftpm/
added LICENSE +26 −0
@@ -0,0 +1,26 @@
1+Zyquo Atlas — License
2+
3+Copyright © 2026 Simon-Pierre Boucher. All rights reserved.
4+
5+This source code is made publicly available for reference, evaluation, and
6+transparency. It is NOT released under an open-source license. No permission is
7+granted to copy, modify, redistribute, sublicense, or create derivative works
8+from this software or its source code, in whole or in part, without the prior
9+written permission of the copyright holder.
10+
11+The compiled application (including the notarized .dmg attached to GitHub
12+Releases) is provided free of charge for personal use.
13+
14+Third-party components retain their own licenses:
15+ • Mozilla Readability (Sources/ZyquoAtlas/Content/Readability.js,
16+ Readability-readerable.js) — Apache License 2.0, Copyright (c) 2010 Arc90
17+ Inc. See Sources/ZyquoAtlas/Content/LICENSE-Readability.txt.
18+ • swift-markdown (Swift Package dependency) — Apache License 2.0.
19+
20+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
22+FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE
23+LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY ARISING FROM THE USE OF THE
24+SOFTWARE.
25+
26+Contact: contact@spboucher.ai
modified README.md +325 −33
@@ -5,48 +5,340 @@
5 Mail: contact@spboucher.ai 5 Mail: contact@spboucher.ai
6 --> 6 -->
7 7
8+<div align="center">
9+
10+<img src="assets/app-icon.png" width="168" height="168" alt="Zyquo Atlas app icon" />
11+
8 # Zyquo Atlas 12 # Zyquo Atlas
9 13
10−A legendary, native macOS **web browser** written in Swift + SwiftUI on WebKit 14+### The AI-native macOS web browser — every surface, intelligent.
11−(`WKWebView`), built **without the Xcode IDE** (Swift Package Manager + the 15+
12−command-line toolchain). Part of the **Zyquo** family. AI is woven into every 16+*A fast, radically customizable, privacy-first browser where AI is woven into the omnibox,
13−surface, powered by the same providers/models and encrypted key vault as 17+the page, your selection, and your tabs — powered by **your** keys across **12 providers** and **169 models**.*
14−**Zyquo Cloud**. 18+
19+<br/>
20+
21+[![Release](https://img.shields.io/github/v/release/spboucher-ai/zyquo-atlas?sort=semver&label=release&color=1FA9A0)](https://github.com/spboucher-ai/zyquo-atlas/releases/latest)
22+[![Platform](https://img.shields.io/badge/platform-macOS%2013%2B-4E63E0)](https://www.apple.com/macos/)
23+[![Swift](https://img.shields.io/badge/Swift-5.9-orange?logo=swift&logoColor=white)](https://swift.org)
24+[![WebKit](https://img.shields.io/badge/engine-WebKit%20(WKWebView)-1FA9A0)](https://webkit.org)
25+[![Universal](https://img.shields.io/badge/binary-Universal%20(arm64%20%2B%20x86__64)-4E63E0)](#-building-from-source)
26+[![Notarized](https://img.shields.io/badge/Gatekeeper-Notarized%20Developer%20ID-2FA36B?logo=apple&logoColor=white)](#-installation)
27+[![Downloads](https://img.shields.io/github/downloads/spboucher-ai/zyquo-atlas/total?color=1FA9A0)](https://github.com/spboucher-ai/zyquo-atlas/releases)
28+[![License](https://img.shields.io/badge/license-Proprietary-lightgrey)](LICENSE)
29+
30+<br/>
31+
32+[**⬇︎ Download the latest .dmg**](https://github.com/spboucher-ai/zyquo-atlas/releases/latest/download/ZyquoAtlas.dmg) &nbsp;·&nbsp; [Features](#-features) &nbsp;·&nbsp; [Screenshots](#-screenshots) &nbsp;·&nbsp; [Install](#-installation) &nbsp;·&nbsp; [Build](#-building-from-source)
33+
34+</div>
35+
36+---
37+
38+## 📑 Table of Contents
39+
40+- [Overview](#-overview)
41+- [Screenshots](#-screenshots)
42+- [Features](#-features)
43+ - [Browser core](#browser-core)
44+ - [AI everywhere](#ai-everywhere)
45+ - [Massive customization](#massive-customization)
46+ - [Privacy &amp; security](#privacy--security)
47+ - [Keyboard shortcuts](#keyboard-shortcuts)
48+- [Supported AI providers &amp; models](#-supported-ai-providers--models)
49+- [Requirements](#-requirements)
50+- [Installation](#-installation)
51+- [Usage](#-usage)
52+- [Building from source](#-building-from-source)
53+- [Architecture](#-architecture)
54+- [Verification](#-verification)
55+- [Roadmap](#-roadmap)
56+- [Contributing](#-contributing)
57+- [License](#-license)
58+- [Author](#-author)
59+
60+---
61+
62+## 🧭 Overview
63+
64+**Zyquo Atlas** is a native macOS web browser built in **Swift + SwiftUI** on Apple's
65+**WebKit (`WKWebView`)** engine — compiled entirely with the Swift Package Manager and the
66+command-line toolchain, **without the Xcode IDE**. It is the web-browser member of the
67+**Zyquo** family.
68+
69+Unlike browsers that bolt a chatbot onto a sidebar, Atlas weaves AI into every surface —
70+the omnibox, the current page, your text selection, and across your open tabs — and it does
71+so on **your** terms: you bring your own API keys, stored in a machine-bound, AES-256-GCM
72+encrypted vault (no Keychain), and page content is sent to a provider **only** when you
73+invoke an AI action.
74+
75+- **~8,300 lines** of Swift across **58 files**, zero build warnings.
76+- **12 AI providers · 169 models** — the same catalog and provider layer as Zyquo Cloud.
77+- **Universal** (Apple Silicon + Intel), **Developer ID–signed, notarized, and stapled**.
78+
79+---
80+
81+## 📸 Screenshots
82+
83+<div align="center">
84+
85+**Customizable start page — flagship light theme**
86+
87+<img src="assets/screenshot-startpage.png" width="820" alt="Zyquo Atlas start page (light theme)" />
88+
89+<br/><br/>
90+
91+**Live browsing with the bookmarks bar**
92+
93+<img src="assets/screenshot-browsing.png" width="820" alt="Zyquo Atlas rendering a web page with the bookmarks bar" />
94+
95+<br/><br/>
96+
97+**Midnight dark theme with left vertical tabs**
98+
99+<img src="assets/screenshot-dark.png" width="820" alt="Zyquo Atlas dark theme with left vertical tab sidebar" />
100+
101+</div>
102+
103+---
104+
105+## ✨ Features
106+
107+Every feature below is implemented in this repository — nothing aspirational.
108+
109+### Browser core
110+
111+- 🗂️ **Real multi-tab WKWebView browsing** — each tab owns its web view and navigation
112+ state, with a determinate progress bar, back/forward/reload/stop, and links that open in
113+ new tabs (`target=_blank`, ⌘-click, `window.open`).
114+- 📌 **Tab pinning**, **background-tab suspension** (dims + frees memory), and **session
115+ restore** per profile on relaunch.
116+- ↕️ **Top horizontal tabs OR a left vertical tab sidebar** (Arc-style) — switch live.
117+- 🧭 **Smart omnibox** — resolves your input into **navigate** (URL), **web search**, or
118+ **Ask AI**, with a security indicator and reader toggle.
119+- 🕵️ **Private windows** (⌘⇧N) using a non-persistent data store — no history, no session,
120+ no saved data.
121+- 📖 **Reader mode** — a clean, themeable article view with an optional AI summary at the top.
122+- ⬇️ **Downloads** — routed to `~/Downloads` with live progress, reveal-in-Finder, and open.
123+- 🔎 **Find-in-page** (⌘F) — native WebKit find with next/previous and wrap.
124+- ⭐ **Favorites** — a toggleable bookmarks bar, a full manager (edit title/URL/tags/notes,
125+ show-on-bar), search, and **Netscape HTML import/export** (interchange with other browsers).
126+- 🕘 **Full-text history** — searchable, grouped by day, with delete-range/clear controls.
127+- 👤 **Profiles** — a persistent personal profile and a private profile, each with isolated
128+ WebKit data stores.
129+
130+### AI everywhere
131+
132+- 💬 **Chat-with-page sidebar** — a per-tab, multi-turn conversation grounded in the page's
133+ extracted content, with an in-panel **model picker across all 169 models**.
134+- ⚡ **Quick actions** — one-click **Summarize**, **Key points**, and **Translate**, plus
135+ long-page **map-reduce** summarization for articles that exceed the model's context.
136+- 🖱️ **Selection floating toolbar** — select any text on a page and get **Explain /
137+ Summarize / Translate / Rewrite / Ask** right at the cursor.
138+- 🔮 **Ask AI from the omnibox** — get a streamed, grounded answer without leaving the page.
139+- 🪟 **Multi-tab reasoning** — "compare these open tabs" gathers several pages and answers
140+ across them.
141+- 🎚️ **Per-action model tiers** — pick a fast/cheap model for quick actions and a strong one
142+ for deep chat; choices persist.
143+- 🧱 **Grounded &amp; injection-safe** — page content is extracted with Mozilla Readability in
144+ an isolated JavaScript world (visible text only), wrapped as untrusted data in every
145+ prompt, and streamed responses **cancel automatically on navigation**.
146+
147+### Massive customization
148+
149+- 🎨 **Theming engine** — **10 built-in themes** (light &amp; dark, including the flagship
150+ teal-indigo *Atlas Light* and *Midnight*), plus a **custom theme editor** (native color
151+ wells for accent / background / chrome) that applies **live**.
152+- 🖼️ **Backgrounds** — solid, gradient, or image behind the chrome and start page.
153+- 🧩 **Layout** — top or left tabs, **compact/comfortable density**, bookmarks-bar toggle,
154+ and a **UI-size slider**.
155+- 🏠 **Customizable start page** — greeting, a prominent search / Ask-AI box, and a favorites
156+ grid.
157+- 💾 **Per-profile persistence** and **theme import/export** as small JSON files.
158+
159+### Privacy &amp; security
160+
161+- 🔐 **Encrypted key vault** — API keys are stored with **AES-256-GCM** (CryptoKit),
162+ bound to the machine via `IOPlatformUUID` + HKDF, in `~/Library/Application
163+ Support/ZyquoAtlas/vault.zq` — **not** the Keychain, decrypted on demand and never logged.
164+- 🛡️ **Content leaves the device only on a user-invoked AI action**, always to the provider
165+ you chose, via your own key — **never to Zyquo**.
166+- 🧯 **Prompt-injection hardening** — extraction drops hidden/`aria-hidden`/off-screen text;
167+ page content is delimited and labelled untrusted; the AI layer has no navigation or tool
168+ access, so even a hostile page can only produce a bad summary, never an action.
169+- 🍎 **Hardened Runtime, Developer ID–signed, notarized &amp; stapled** — `spctl` reports
170+ *Notarized Developer ID*.
171+
172+### Keyboard shortcuts
173+
174+| Shortcut | Action | Shortcut | Action |
175+|---|---|---|---|
176+| `⌘T` | New tab | `⌘Y` | History |
177+| `⌘W` | Close tab | `⌥⌘B` | Bookmarks manager |
178+| `⌘L` | Focus omnibox | `⌘⇧J` | Downloads |
179+| `⌘⇧A` | Toggle AI sidebar | `⌘⇧N` | Private window |
180+| `⌘F` | Find in page | `⌘1`–`⌘8`, `⌘9` | Switch tab / last tab |
181+| `⌘D` | Bookmark page | `⌥Space` | Quick AI ask |
182+| `⌘R` | Reload | `⌘[` / `⌘]` | Back / forward |
183+| `⌘,` | Customize | | |
184+
185+---
15 186
16−## Build 187+## 🤖 Supported AI providers &amp; models
188+
189+Atlas speaks to **12 providers** and ships a catalog of **169 chat models**, calling each
190+provider exactly as Zyquo Cloud does (OpenAI-compatible or native Anthropic Messages API,
191+streaming SSE, reasoning-token aware). Bring your own key per provider.
192+
193+| Provider | Provider | Provider |
194+|---|---|---|
195+| OpenAI | Anthropic (Claude) | xAI (Grok) |
196+| Mistral | Google Gemini | Alibaba Qwen (DashScope) |
197+| DeepSeek | Kimi (Moonshot) | Perplexity |
198+| Together AI | DeepInfra | Cerebras |
199+
200+Every provider/model was live-verified end-to-end — see [Verification](#-verification).
201+
202+---
203+
204+## 💻 Requirements
205+
206+- **macOS 13.0 (Ventura) or later** — Apple Silicon or Intel.
207+- An **API key** for at least one supported provider to use the AI features (browsing works
208+ without any key).
209+- To build from source: the **Swift 5.9+ toolchain** (Command Line Tools or Xcode).
210+
211+---
212+
213+## 📦 Installation
214+
215+1. **[Download `ZyquoAtlas.dmg`](https://github.com/spboucher-ai/zyquo-atlas/releases/latest/download/ZyquoAtlas.dmg)** from the latest release.
216+2. Open the DMG and **drag *Zyquo Atlas* into Applications**.
217+3. Launch it. The app is **notarized by Apple**, so Gatekeeper opens it without warnings.
218+4. Add your API keys in **Customize / Settings** (or import them) to enable AI features.
219+
220+> Verify authenticity yourself: `spctl -a -vv "/Applications/Zyquo Atlas.app"` →
221+> `source=Notarized Developer ID`.
222+
223+---
224+
225+## 🚀 Usage
226+
227+- **Browse** — type a URL or search terms in the omnibox; press Enter.
228+- **Ask AI** — click **Ask AI** in the omnibox, or open the sidebar with `⌘⇧A`, to ask about
229+ the current page with cited, grounded answers.
230+- **Summarize** — open the AI sidebar and hit **Summarize** (works on long articles via
231+ map-reduce), or use **Reader mode** for a clean read + summary.
232+- **Selection actions** — select text on any page and choose **Explain / Translate / Rewrite
233+ / Ask** from the floating toolbar.
234+- **Compare tabs** — open several pages and click **Compare tabs** in the sidebar.
235+- **Customize** — press `⌘,` to switch themes, move tabs to a left sidebar, tune density, and
236+ edit a custom theme with live preview.
237+
238+---
239+
240+## 🛠️ Building from source
241+
242+Zyquo Atlas builds with the Swift Package Manager — **no Xcode project required**.
17 243
18 ```sh 244 ```sh
19−make dev # release build → dist/Zyquo Atlas.app, ad-hoc signed (local iteration) 245+git clone https://github.com/spboucher-ai/zyquo-atlas.git
20−make run # make dev, then launch the app 246+cd zyquo-atlas
21−make test # run the test suite 247+
22−make release # universal (arm64+x86_64), Developer ID signed, notarized, stapled 248+make dev # release build → dist/Zyquo Atlas.app (ad-hoc signed), for local iteration
23−make dmg # signed + notarized + stapled dist/ZyquoAtlas.dmg (run after make release) 249+make run # build + launch
24−make icon # regenerate AppIcon.icns from assets/icon/zyquo-atlas.svg 250+make test # run the test suite
25−make verify # API verification with real keys (source .env.keys) 251+make icon # regenerate AppIcon.icns from assets/icon/zyquo-atlas.svg
26−make clean 252+
253+# Distribution (requires a Developer ID certificate + notarytool profile):
254+make release # universal (arm64 + x86_64), Developer ID signed, notarized, stapled
255+make dmg # signed + notarized + stapled dist/ZyquoAtlas.dmg
256+```
257+
258+Dependencies: Apple frameworks only — **SwiftUI, WebKit, CryptoKit, AppKit, Foundation,
259+Combine, Security, IOKit** — plus Apple's **swift-markdown**. Mozilla **Readability**
260+(Apache-2.0) is vendored for content extraction. No third-party HTTP libraries.
261+
262+---
263+
264+## 🏗️ Architecture
265+
266+```
267+Sources/ZyquoAtlas/
268+├── App/ @main entry, scene + commands, per-window state, app environment
269+├── DesignSystem/ ZyquoTheme tokens · AtlasTheme + 10 built-in themes · ThemeEngine
270+├── Models/ Tab · Profile · Bookmark · HistoryEntry · AIModel · Message · …
271+├── Browser/ WebView (WKWebView wrapper) · TabManager · ProfileStore ·
272+│ OmniIntent · DownloadManager
273+├── Content/ ContentExtractor + Readability.js + AtlasExtractor.js · PageContext ·
274+│ Chunker (isolated WKContentWorld, visible-text-only)
275+├── AI/ AIService (streaming, cancel-on-nav) · AIActions · Summarizer
276+├── Providers/ ProviderProtocol · OpenAICompatibleClient · AnthropicClient · Registry
277+├── Services/ ModelCatalog (169) · SecureKeyStore (AES-256-GCM) · StreamingService (SSE)
278+├── Features/ BookmarksService · HistoryService
279+├── ViewModels/ KeyVaultStore
280+└── Views/ Browser chrome, AI sidebar + selection toolbar, feature panels
27 ``` 281 ```
28 282
29−`make release` produces a **Notarized Developer ID** `Zyquo Atlas.app` (verified: 283+---
30−`spctl -a -vv` → `source=Notarized Developer ID`), universal, built without the 284+
31−Xcode IDE. Signing identity, Team ID, and the `notarytool` keychain profile are 285+## ✅ Verification
32−reused from the Zyquo family pipeline; no secrets live in this repo. 286+
287+A built-in harness (`--verify`) exercises the real stack — content extraction, then a
288+grounded summarize across **every one of the 169 models**, the full AI-action matrix, and
289+cancel-on-navigation / privacy invariants — against live APIs.
290+
291+**Latest result: 183 / 183 checks green.** Full table in
292+[`docs/VERIFICATION.md`](docs/VERIFICATION.md).
293+
294+---
295+
296+## 🗺️ Roadmap
297+
298+Planned enhancements (tracked in [`docs/PLAN.md`](docs/PLAN.md)):
299+
300+- Tab groups / "spaces" and drag-to-reorder
301+- Hover thumbnail previews for tabs and links
302+- AI writing assist that types back into web text fields
303+- Opt-in auto-summaries and link hover-summaries
304+- Inline source-link and section-citation chips in answers
305+- A menu-bar quick-ask extra
306+
307+---
308+
309+## 🤝 Contributing
310+
311+Issues and feature suggestions are welcome via
312+[GitHub Issues](https://github.com/spboucher-ai/zyquo-atlas/issues). This is a source-available
313+project (see [License](#-license)); please open an issue to discuss substantial changes before
314+submitting a pull request.
315+
316+Engineering standards: Swift 5.9+, zero warnings, every source file carries the project
317+header, design tokens over magic numbers, and the provider layer stays byte-compatible with
318+the Zyquo family.
319+
320+---
321+
322+## 📄 License
323+
324+Copyright © 2026 Simon-Pierre Boucher. **All rights reserved.** The source is public for
325+reference and transparency; the compiled app (the notarized `.dmg`) is free for personal use.
326+See [`LICENSE`](LICENSE). Vendored Mozilla Readability and swift-markdown are Apache-2.0.
327+
328+---
329+
330+## 👤 Author
331+
332+<div align="center">
333+
334+**Simon-Pierre Boucher**
33 335
34−### Toolchain note 336+📧 [contact@spboucher.ai](mailto:contact@spboucher.ai)
35 337
36−The Command Line Tools' default SDK (macOS 27 beta) declares SwiftUI's `@State` 338+<br/>
37−& co. as macros whose `SwiftUIMacros` plugin ships only with Xcode, so every
38−SwiftUI build fails against it. All builds therefore pin
39−`SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX26.sdk` (set in the
40−`Makefile`). Build directly with `swift build -c release` only if you export the
41−same `SDKROOT`.
42 339
43−## Layout 340+*Part of the **Zyquo** family — Cloud · Local · Agent · Atlas.*
44 341
45−- `Sources/ZyquoAtlas/` — the app (App, DesignSystem, Models, Browser, Content, 342+<sub>Built with Swift, SwiftUI &amp; WebKit — no Xcode IDE. 🗺️</sub>
46− AI, Providers, Features, Services, ViewModels, Views).
47−- `Sources/ZyquoVerify/` — thin launcher that execs the app's `--verify` harness.
48−- `docs/` — `PLAN.md` (phase progress), `AI-BROWSER-RESEARCH.md` (Phase 0.A),
49− `PROVIDER-REUSE.md` (Phase 0.B).
50−- `Resources/`, `scripts/`, `assets/` — bundle resources, build scripts, icon source.
51 343
52−Requires macOS 13.0+. 344+</div>
added assets/app-icon.png +0 −0

Binary file not shown.

added assets/app-icon@512.png +0 −0

Binary file not shown.

added assets/screenshot-browsing.png +0 −0

Binary file not shown.

added assets/screenshot-dark.png +0 −0

Binary file not shown.

added assets/screenshot-startpage.png +0 −0

Binary file not shown.

Menu

Theme