Cueward
A CLI tool that captures scattered knowledge from macOS native sources and makes it searchable.
Cueward reads Safari history, Apple Notes, and iMessage locally — no cloud APIs, no web scraping, no third-party dependencies. It auto-tags content using keyword rules and indexes everything for fast BM25 search.
Designed as a Unix-style tool: it outputs structured JSON for AI Agents to consume.
Install
Requires Rust 1.85+ (edition 2024).
macOS Permissions
Cueward reads local databases that require Full Disk Access:
- Open System Settings > Privacy & Security > Full Disk Access
- Add your terminal app (Termdock, Terminal.app, iTerm2, WezTerm, etc.)
For Apple Notes, Reminders, and Calendar operations, also allow automation:
- System Settings > Privacy & Security > Automation > allow your terminal to control Notes, Reminders, and Calendar
Usage
Capture
Extract knowledge fragments from local sources:
# Everything from the last 24 hours
# Safari only, last 7 days
# Apple Notes, last 3 hours
Safari
Read current Safari tabs, not just browsing history:
# List all open tabs
# Filter by Safari profile name parsed from window title
# Current active tab in the front window
# Open a new tab
# Close current tab or a specific tab index in the front window
# Read current page text or a specific element
# Read full HTML source
# Execute JavaScript / DOM actions in the active tab
# Target a specific tab by index or URL/title match
# Scroll the page
# Close multiple tabs by profile or URL pattern
# List bookmark/folder items from the Safari bookmarks root
# Scope bookmarks to a specific Safari profile folder
# Traverse nested bookmark folders inside a profile
# Folder paths use "/" as the separator; folder titles containing "/" are not supported
# in this first version
# Search bookmarks recursively from the root or a profile folder
# Add a bookmark into a nested folder inside a profile
# Delete by exact title + URL within a profile folder
Safari AI
Control web-based AI providers (Gemini, ChatGPT) via Safari automation. Uses URL navigation and execCommand — no fragile DOM clicking, no focus stealing.
# Send a prompt (general chat)
# Switch to a specific mode first
# Deep Research with auto-confirm
# Switch mode only (no prompt)
# List conversations from sidebar
# Read a conversation's text content (reports, chat history)
# Poll an in-progress Deep Research
# Save AI-generated images as PNG
# Download video/music via browser (triggers Safari native download)
# Use a specific Safari profile
Supported Gemini modes: deep-research, image, video, music.
Outputs JSON to stdout:
Triage
Auto-tag and index captured cues:
Reads from ~/.cueward/inbox/, applies keyword-based auto-tagging, and writes to a local BM25 index.
Configure auto-tagging in ~/.cueward/tags.toml:
[]
= ["Rust", "cargo", "crate", "rustc"]
[]
= ["AI", "LLM", "ChatGPT", "Claude", "GPT"]
[]
= ["stock", "ETF", "investment"]
Search
Query the local index:
Send
Create a digest note in Apple Notes and optionally trigger a macOS notification:
# Create a note
# With notification
# Pipe from capture
|
Plan
Create a reminder in Apple Reminders:
Reminders
Read existing Apple Reminders:
# List all reminders
# Filter by reminders list
# Reminders due today
Outputs JSON with title, notes, due_date, completed, and list_name.
OCR
Extract text from images or PDFs via Apple Vision Framework:
Supports PNG, JPG, PDF. Languages: zh-Hant, zh-Hans, en-US, ja.
Notes Management
Update, delete, or move Apple Notes:
# Update a note's body
# Delete a note
# Move between folders
Calendar
Query and manage Apple Calendar events:
# Today's events
# Events in a time range
# Filter by calendar
# Create an event
# Delete an event (matches by title + start time)
Datetime format: ISO 8601 (2026-04-11T14:00:00) or YYYY-MM-DD HH:MM.
Screenshot
Capture a screenshot, optionally with OCR:
# Capture main screen
# With OCR text extraction
# Specific display (1=main, 2=secondary, 3=third)
# Custom output path
Clipboard
Read and write the system clipboard:
# Read clipboard (text or image)
# Save clipboard image to a specific path
# Write text to clipboard
Text content returns JSON with "type": "text". Image content is saved as PNG and returns "type": "image" with the file path.
Quick Notes
List, update, archive, and delete system Quick Notes (快速備忘錄):
# List all Quick Notes
# Update a Quick Note's body
# Delete a Quick Note
# Archive a Quick Note into a regular note, then remove it from Quick Notes
# Create a note in the Quick Notes folder
Quick Notes are identified by the system ZISSYSTEMPAPER flag — notes created via the macOS Quick Note gesture (hot corner, Apple Pencil, etc.). list, update, and delete operate on these system-tagged notes regardless of which folder they reside in. create places a regular note in the "Quick Notes" folder but does not mark it as a system Quick Note.
archive is the cleanup workflow for real Quick Notes: it copies the note into a regular destination folder, waits for the new note to appear, and deletes the original Quick Note so it disappears from the Quick Notes smart view. This preserves link URLs, but Apple Notes rich-link cards may be flattened into normal links in the archived copy.
Agent Integration
Cueward outputs structured JSON — it does not call any LLM. The LLM layer is your Agent's responsibility.
Pipe to an Agent
# Claude Code
|
# Gemini CLI
|
As a Skill
A reference skill for Claude Code is included in skills/cueward-agent/. Copy it to your skills directory to teach Claude how to use Cueward automatically:
&&
Architecture
crates/
├── core/ Cue struct, PlatformAdapter trait, BM25 index, auto-tagger
├── cli/
│ ├── main.rs CLI entrypoint
│ └── commands/ Command-local clap enums, dispatch, and parse tests
├── adapter-macos/
│ ├── safari/
│ │ ├── mod.rs Public Safari facade + re-exports
│ │ ├── types.rs Shared Safari result types
│ │ ├── script.rs Shared AppleScript / JavaScript builders
│ │ ├── core.rs Tabs, open/close, read/exec, scroll / scroll-and-read
│ │ ├── history.rs Safari History.db capture
│ │ ├── social/ Threads / X feed extractors
│ │ └── ai/ Gemini / ChatGPT / Grok provider modules
│ ├── bookmarks.rs Safari bookmarks CRUD
│ ├── safari_guard.rs Shared Safari rate limit + file lock guard
│ ├── notes.rs Apple Notes automation
│ ├── reminders.rs Apple Reminders read / write
│ ├── calendar.rs Apple Calendar read / write
│ ├── screenshot.rs Screenshot capture
│ ├── clipboard.rs Clipboard read / write
│ └── ocr.rs Vision OCR
└── adapter-windows/ Reserved for future cross-platform support
- Core Engine + Adapter Pattern: Platform-specific code is isolated in adapters. Core logic is platform-agnostic.
- Native First: Direct SQLite reads, AppleScript, and Vision Framework. No web scraping, no browser automation.
- Privacy: All data extraction happens locally. Nothing leaves your machine.
Data Storage
~/.cueward/
├── inbox/ Captured cues awaiting triage
├── processed/ Triaged cues (moved from inbox)
├── index/ Tantivy BM25 search index
├── cache/
│ ├── ocr/ OCR result cache (by SHA256)
│ ├── screenshots/ Screenshot captures
│ └── clipboard/ Clipboard image captures
├── state.json High watermark timestamps per source
└── tags.toml Auto-tagging keyword rules (user-created)
License
MIT