Your corpus lives on your machine.
Uoink extracts video and podcast content, stores it on your disk, and hands it to the AI you choose. There is no Uoink cloud because we never built one.
What Uoink does.
Uoink captures transcripts, screenshots, comments, channel context, podcast transcripts, metadata, and local indexes. It writes those artifacts into normal local files and a local SQLite index. You can paste the corpus into Claude or ChatGPT, or let an MCP agent read it directly.
What Uoink skips.
No account or Uoink-hosted corpus. Local storage does not make every operation offline; model dependencies can send telemetry.
Website analytics vs. local app privacy
The public marketing website (uoink.app) uses Vercel Analytics to count page visits and help us see how people find the installer. This integration does not send your local captures, library, settings, or API keys. The desktop helper sends no Uoink analytics or crash reports unless you turn on anonymous usage counts, described next. Model-library telemetry is separate.
Anonymous usage counts (off by default)
Uoink sends nothing about how you use it unless you turn on Share anonymous usage counts in Settings. When it is on, the helper sends at most one report a day to usage.uoink.app with: a random install ID and report ID, the app version, your OS family, major version and processor type, the install type, the hours the report covers, and counts of MCP tool calls by tool name and by stdio or HTTP, AI apps connected (from a fixed list of names, anything else counted as other), captures by source type and whether they succeeded, and searches. It never sends content, URLs, titles, file paths, search text, prompts, API keys or account details.
Settings shows the exact report before it is sent and the last 10 reports sent. Turning sharing off stops reports and deletes the install ID and the counts on your PC. The receiver stores only daily totals, keeps no raw reports, and does not store IP addresses; like any web request, the connection exposes your IP address to the hosting provider.
Update checks
The release-check endpoint queries api.github.com when its cache needs refreshing or a caller forces a check. It sends no library payload and does not install an update. Like other internet requests, it exposes connection metadata such as your IP address.
Where your data lives.
On Windows, the helper lives under %LOCALAPPDATA%\Uoink. Captures write into your chosen library folder, normally on your Windows Desktop. Windows can redirect that folder to OneDrive; upgrades can retain an older Yoink output folder. Settings, the index, jobs and subscription records normally live under the local app-data folder. Logs can contain source URLs, paths and capture details. Optional Anthropic and ScrapeCreators keys are stored in Windows Credential Manager.
On a Mac (the Apple Silicon preview, from 3.11.2), Uoink keeps the same items in macOS locations: captures, including the _yoink-trash folder, in ~/Desktop/Uoink/; the library index, settings, helper state, discovery runs, optional usage counts and the extension copy in ~/Library/Application Support/Uoink/; the Anthropic and ScrapeCreators keys in the macOS Keychain, under the same service and usernames as on Windows; and login-startup logs in ~/Library/Logs/Uoink/.
Network calls Uoink makes.
Extraction calls go to the source you asked for: YouTube, X, RSS hosts, or another supported URL. Enabled podcast, YouTube channel and playlist subscriptions poll while the helper runs, even with automatic capture off. Connected agents can register subscriptions. Automatic capture starts off for a new source; enabling it permits eligible captures within its limits. Podcast auto-ingest does not approve downloading a missing Whisper model. X text extraction attempts a full-text supplement through FxTwitter using the post ID, even when the post was not identified as truncated; it has no separate prompt. Source delivery hosts and redirects can receive requests too. Queued work can retry. Optional AI calls use your own Anthropic key. Entity extraction is opt-in and off by default; the model-usage meter reports real usage.
Connected agents can start paid Anthropic calls with your saved key when you allow those actions, even when automatic analysis is off. Comment and hook analysis, writing, and research generation can send relevant library text, comments, metadata, and saved discovery results to Anthropic; repurposing can also send active writing style anchors. Hook classification can send up to eight saved corrections, including the same video’s past corrections. It prioritizes the same channel, then topic, then recent corrections. Writing generation can include all active style anchors unless you select particular anchors. Local MCP playbook packets make no model call. Key removal has limits: Uoink attempts to delete the current Anthropic credential, but can still fall back to a legacy Yoink credential, and deletion failures can go unreported. Older plaintext keys can remain if migration failed. Check Windows Credential Manager and the active profile settings when removing a key; revoke it at Anthropic to invalidate it. Disconnect an agent in its client to end that client’s access. Nothing is proxied through Uoink.
Connections without a new capture
Extension setup screens and saved-item previews can load YouTube thumbnails, exposing the video ID and connection metadata. After successfully copying a completed capture, the extension opens claude.ai/new even without an API key or automatic AI analysis. There is no setting to disable that tab. Opening it contacts Anthropic’s website; it does not paste the capture or put the capture in the URL. You decide whether to paste and submit it.
Local transcription and model telemetry
Audio transcription runs locally. Since 3.12, the Windows installer and the Mac app ship Whisper's base model (OpenAI Whisper, MIT-licensed, in SYSTRAN's faster-whisper conversion), so a video without captions is transcribed on your computer from the first capture, with no model download. A model you downloaded yourself takes precedence. Other sizes (tiny, small, medium and large) download only when you ask, and Uoink never downloads a model during a capture. Downloading a model that is not on your computer requires a per-request download-approval flag; a connected agent can set that flag without showing a Uoink prompt. The reliability checker has a separate model-download action and can fetch source audio again. Optional speaker labeling downloads pyannote/speaker-diarization-community-1 from Hugging Face when needed and can send your Hugging Face token to huggingface.co. Supporting transcription and alignment models can also download from Hugging Face or PyTorch hosts, and language data from NLTK. A cached Whisper model does not make the whole runtime offline.
The pinned pyannote-audio 4.0.7 dependency enables metrics to otel.pyannote.ai by default. Its metrics include model or pipeline origin, library version, a random session identifier and, for pipeline runs, duration and speaker-count parameters. WhisperX uses pyannote for voice-activity detection even with speaker labeling off. Uoink provides no dashboard switch; the dependency supports setting PYANNOTE_METRICS_ENABLED=false in the helper’s environment.
X text privacy controls
X text capture is enabled by default. Setting x_text_capture_enabled to false in local settings stops both syndication and FxTwitter text requests. There is no dashboard or extension toggle, and POST /settings does not accept this field. Video capture is separate.
Background capture controls
Turning automatic capture off stops new automatic starts; already-started work may finish and polling continues. Stop Uoink stops the helper and polling until restart. Disable Autostart on login to prevent a restart at Windows login. There is no per-source polling-pause button in the dashboard or extension. The authenticated local API can archive a subscription through POST /sources/archive; legacy podcast and monitored-playlist enable controls cover only sources with those records.
Copies and retention
Connected clients, clipboard copies and exports can carry library content to other services. Corpus exports write under _exports in the output folder. Optional library and Obsidian mirrors create more local copies, which sync software can upload; the memory mirror includes TASTE.md and USER.md. The extension’s screenshot-interval preference uses browser sync storage.
Soft-deleted captures stay in the output folder’s trash until purged. Cleanup of items older than 30 days is attempted at startup and every 24 hours. Uninstall leaves captures, the index, settings and saved credentials; model caches and the helper token can remain. Edited topics.json routing rules are removed with the application, so save a copy first. Uninstall is not data erasure: retained files, trash, legacy folders, exports and mirrors need separate cleanup. Copies already shared have their own lifecycles.
Uninstall on a Mac
Close AI clients that use Uoink, then run bash /Applications/Uoink.app/Contents/Resources/scripts/mac/uninstall.sh /Applications/Uoink.app --remove. It removes the app and its login item and keeps your data. Then, if you want, delete ~/Library/Application Support/Uoink/ and ~/Desktop/Uoink/, and the Uoink entries in Keychain Access.
Optional ScrapeCreators discovery
Discovery is off by default. Only after you enable it, add your own key, and authorize a request does Uoink send your typed creator handle, YouTube channel ID, or search query to ScrapeCreators. It sends no library text, transcripts, or comments. Paid calls require credit confirmation and either a dashboard intent or separately enabled agent discovery. The daily cap defaults to 25 credits; checking the balance may also use a credit. Picking saved candidates queues ordinary source captures without another ScrapeCreators call.
Local discovery run files store the typed handle, channel ID, or query; request identity (provider, endpoint, mode, platform, and fetch time); normalized candidates and metrics; credit accounting, daily cap, and coverage; queue state; and errors, including partial and failed runs. They contain no raw vendor responses, thumbnails, or API keys. The daily purge removes these run files once they are older than 90 days. Local playbooks may reuse eligible snapshots up to 30 days old.
Chrome Web Store
Uoink’s use and transfer of user data complies with the Chrome Web Store User Data Policy, including its Limited Use requirements.
Open source: audit it yourself.
The source is MIT-licensed at github.com/ryanbiddy/uoink. You can inspect the helper, loopback server, and network code.