A Raycast extension for the Paper Agent workflow: run the pipeline, browse today’s and recent papers, search your library, manage favorites and a reading queue, and schedule daily runs on macOS.
[!IMPORTANT] Repository references
- Paper Agent core repo (main workflow): https://github.com/galleonli/paper-agent
- Paper Agent Raycast extension repo (this project): https://github.com/galleonli/paper-agent-raycast
Start with the Paper Agent core README first. This repo contains the Raycast extension only. Complete core setup and run it once before using extension commands.
config.yaml and paper_agent installed (default Python is <config_dir>/.venv/bin/python3, or set Python Executable in Preferences)library/ (JSON outputs)Follow the core README Quick start first, then return here.
You need core installed and runnable (valid config.yaml, environment ready, and at least one successful run so library/ has data).
One-liner (Unix/macOS):
git clone https://github.com/galleonli/paper-agent.git && cd paper-agent && ./scripts/bootstrap.sh
Then run the pipeline once (e.g. ./.venv/bin/python -m paper_agent run --config config.yaml). For detailed core install (cron, config options), see the core README Quick start.
npm install and npm run dev to load the extension in Raycast.Open Raycast → Extensions → Paper Agent → Preferences and set:
| Preference | Description |
|---|---|
| Config File Path | Full path to the core config.yaml (e.g. /path/to/paper-agent/config.yaml). |
| Paper Directory | Your delivery.paper_dir: where notes, digests, and library/ live. |
| Python Executable | Optional. Leave empty to use <config_dir>/.venv/bin/python3. |
When you use Run Paper Pipeline or Install Daily Schedule, the extension builds runtime config (direction, delivery, summarize, sources, policy) from these preferences; values in config.yaml for those sections are overridden. Other sections (e.g. interests, export, prompts) are still read from config.yaml.
| Command | Description |
|---|---|
| Run Paper Pipeline | Start the full pipeline in background: fetch, filter, summarize, and write local notes/library plus daily/weekly digests. Runtime fields come from Preferences (direction, delivery, summarize, sources); shared sections still come from config.yaml. |
| Today Papers | Browse today’s papers from your local library. Detail view: title, authors, abstract, “Why this paper,” optional research summary. Actions: open paper/note, related papers, mark read, favorites, reading queue. |
| Recent Papers | Browse recently added papers (count-based). Same detail and actions as Today Papers. Limit is set in Preferences (Recent Papers Limit). |
| Search Papers | Search the local library by title, authors, abstract, categories, date. Same list actions as above. |
| Favorite Papers | Papers you’ve added to favorites from any list. Stored locally in the extension. |
| Reading Queue | Papers you’ve queued for reading. Stored locally; same open/read/favorite actions. |
| Install Daily Schedule | Install a macOS launchd job that runs Paper Agent daily at 04:00 and catches up once after boot/login if 04:00 was missed. Re-run after changing Preferences that affect the pipeline. |
| Remove Daily Schedule | Uninstall the daily launchd job. Logs and status history are kept. |
| Check Run Status | View whether the daily schedule is installed, today’s result, last successful day, and last run metadata. Actions: open config directory, log directory, state directory, and last run log (when available). |
| Open Paper Directory | Open the configured paper directory in Finder (notes, library/, digests). |
| Open Config Directory | Open the folder that contains your config.yaml (core repo root) in Finder. Also available as an action in Run Paper Pipeline (Core not found) and Check Run Status when Config File Path is set. |
The daily job is a macOS LaunchAgent. It is loaded only in two cases:
~/Library/LaunchAgents/, including the Paper Agent daily job. If the plist has RunAtLoad = true, that triggers one run at load time (the "catch-up" run).launchctl bootstrap, which loads (or reloads) the job and triggers RunAtLoad once.Opening Raycast or the extension does not load the LaunchAgent. So opening the plugin, running Check Run Status, or browsing papers does not cause a catch-up run.
Agent root on Desktop / iCloud / external drive: When the job runs, the agent root path (where run_paper_agent.sh lives) must be readable. Right after login, iCloud Drive (e.g. Desktop & Documents) or an external disk may not be mounted or ready yet, so the script can be temporarily unavailable. The wrapper waits up to 2 minutes (checking every 15 seconds) for the path to become readable before giving up and writing "agent-root-unavailable". So placing the repo on Desktop or an external drive is supported as long as the volume is available within that window (e.g. after login). If the path is still unavailable after 2 minutes (e.g. external drive not connected at 04:00), run manually or move the repo to a path that is always present (e.g. ~/paper-agent).
If the extension can’t detect the core (missing or invalid config path, missing Python/venv, or paper_agent not runnable), relevant commands show Core not found with:
config.yaml in Findergit clone <this-repo> && cd paper-agent-raycast
npm install
npm run dev # Load extension in Raycast for development
npm run lint # Validate package.json and run ESLint + Prettier
npm run build # Compile extension
Publish to the Raycast Store: npm run publish (see Raycast publish docs).
config.yaml, and Python Executable points to a valid interpreter (or leave empty to use <config_dir>/.venv/bin/python3).python -m paper_agent run --help. If this fails, fix the core environment first.library/ has JSON entries.python -m paper_agent today --json --config config.yaml and python -m paper_agent list --json --limit 20 --config config.yaml.~/Library/Logs/PaperAgent/launchd.stdout.log and launchd.stderr.log for today's date.launchd automation only.provider, imap host, imap user, password or password env var name), then run again.For core-side troubleshooting (config schema, diagnostics, CLI/cron, Scholar provider behavior, output artifacts), see the Paper Agent core Troubleshooting.
This project is licensed under the MIT License.