README.md

May 31, 2026 · View on GitHub

Chaos app icon

Chaos

Turn a desktop full of anonymous screenshots into a searchable archive.

A native macOS menu bar app that watches for screenshots, asks a vision model what they contain,
and files them under useful names while you keep working.

macOS 15+ Apple Silicon Swift 6

Screenshot 2026-05-30 at 14.23.45.pngterminal-git-log_143022.png

Watch the 29-second Chaos demo

Watch the 29-second demo →

Your screenshots should not become a second inbox

Screenshots are effortless to capture and surprisingly painful to retrieve. A week later, the image you need is buried among dozens of files named with timestamps and nothing else.

Chaos quietly fixes that as the files arrive:

  • Names screenshots by meaning using your chosen vision model
  • Files them automatically into an output folder, with optional daily or monthly subfolders
  • Accepts existing images through drag and drop when your backlog needs attention
  • Keeps a searchable local history of recent processing, including failures and retries
  • Stays out of the way in the menu bar until you need it

Install

brew tap michaelmjhhhh/chaos
brew install --cask chaos

Note

Chaos currently supports Apple Silicon Macs running macOS 15 or later. The app is not yet notarized, so macOS will ask you to approve it in System Settings → Privacy & Security after the first launch.

Start filing

  1. Open Settings with Cmd+,.
  2. Choose a provider and enter an API key if it requires one.
  3. Pick the folder to watch and the folder where renamed images should land.
  4. Select Start Watching on the dashboard.
  5. Take a screenshot. Chaos names and files it automatically.

Need to clean up an existing image? Drop a PNG, JPEG, HEIC, or WebP onto the dashboard and it enters the same filing flow.

Built for the way screenshots accumulate

CapabilityWhat it gives you
AI-generated namesFiles you can recognize in Finder and find with Spotlight
Filename templatesA consistent format using {slug}, {date}, and {time}
Automatic organizationOptional day or month folders without manual sorting
Local historyThe latest 500 attempts, searchable across launches
Retry flowA quick way to reprocess failed images after fixing a provider or file issue
Clipboard handoffAn option to copy the renamed image back to your clipboard
Screenshot guardsProcessing limited to new macOS screenshots when folder watching is active
Editorial dashboardLive progress, recent filings, latency, throughput, and success rate

Bring your preferred model

Chaos speaks the OpenAI-compatible vision API format, so you can choose the service that fits your workflow.

ProviderDefault modelBase URL
SiliconRoutergemini-3-flash-previewhttps://api.siliconrouter.com/v1
OpenAIgpt-4o-minihttps://api.openai.com/v1
DeepSeekdeepseek-v4-flashhttps://api.deepseek.com
OpenRouteropenai/gpt-4o-minihttps://openrouter.ai/api/v1
OpenAI-Compatiblegpt-4o-miniYou provide the URL
Ollamaqwen3-vl:2bhttp://localhost:11434/v1

Local Ollama

Chaos connects to Ollama as an optional local provider; it does not bundle or manage the Ollama runtime. Install and start Ollama separately, then pull the default lightweight vision model. qwen3-vl requires Ollama 0.12.7+.

ollama pull qwen3-vl:2b

Select Ollama in Chaos Settings. No API key is required.

How it works

New screenshot


ScreenshotGuard ── rejects unrelated files


VisionAPIClient ── asks your configured model for a short description


SlugSanitizer ─── makes the result filesystem-safe


FileRenamer ───── applies your template, avoids collisions, and files the image

Existing files in the watched directory are ignored. Chaos only processes screenshots created after the watcher starts. Images you explicitly drop onto the dashboard bypass the screenshot filename guard and enter the same naming pipeline.

Build from source

swift build
./build-app.sh
open .build/Chaos.app

Requires macOS 15 or later and Swift 6.0 or later.

Configuration

Chaos stores its configuration at:

~/Library/Application Support/chaos/config.json

On first launch, Chaos imports an existing vibe-shot CLI configuration when one is available.