Taking My Rickrolls to Another Level
By Seppe Alaerts
I kept losing the rickroll link every time I needed it. I wanted my clipboard to have a memory. So I built a searchable vault into Raycast and shipped Value Vault. Type a fragment, hit enter, paste anywhere.

Whenever I write a (non-production) application, I like to hide a rickroll in an obscure corner. An admin settings page nobody opens. A 404 page with suspiciously good production value. A tooltip on the one button nobody clicks. Not constantly, just often enough that typing dQw4w9WgXcQ from memory felt like a skill I shouldn't need. The problem was never commitment to the bit, it was logistics. Every deployment meant the same ritual: open my browser, google for "rickroll", copy the link, realise i just copied the google referrer url, search again, click through to Youtube, copy the url, paste the link, lose twenty minutes. The joke has a half-life of about ten seconds, and I was spending all of it searching.
The rickroll URL was just the mascot. The real problem was every value I look up weekly: the staging server URL, the support inbox, the brand hex codes, that one JSON config blob. Information in notes, URLs in bookmarks, colors in Figma, everything everywhere. I didn't need another password manager. I needed a junk drawer with instant search. Type three letters, hit enter, done.
So I built Value Vault, a Raycast extension you can install from the Raycast Store. Here's how it works and why I built it.
The constraint
It had to be faster than every alternative, or I'd never use it. That ruled out anything with a window to manage, an account to log into, or a sync status to think about. The interaction budget was: open Raycast, type a fragment, press enter. Anything slower than clipboard history wasn't worth building.
It also had to be trustworthy with secrets. A tool that shows your API keys in full text across the room every time you search fails at its one job. Masked by default, reveal on demand.
So the goal was clear: a local-only value store with fuzzy search, one-keystroke copy, and previews that don't leak.
The idea: the list is the interface
The core idea was to not build an app at all. No sidebar, no detail pane, no settings screen. Just a Raycast list where each row is a value: label, type badge, timestamp. The list is the product. Copy is ↵. Paste straight into the frontmost app is ⌘ + ↵. Everything else (edit, duplicate, delete, copy-as-JSON) hangs off the action panel where muscle memory already lives.
Two details make it work:
Types are detected, not declared. Paste a URL and the badge says URL before you touch anything. Hex code, email, JSON blob, number: same deal. You can override the guess with the dropdown, and once you do, your choice sticks. Guessing that fights you is worse than no guessing at all.
Previews are masked until revealed. Every row shows
••••••••until you hit⌘ + Y(the standard Quick Look toggle). Search still matches against the real values, sorickfinds the rickroll without displaying it. Shoulder surfers get nothing.
How it's built
The whole thing is one TypeScript codebase, about 600 lines across eight files, no backend, no dependencies beyond Raycast's own APIs and uuid:
Storage is one key per entry. Each value lives under its own
LocalStoragekey instead of one shared array, so concurrent writes from different commands can't clobber each other. There's no read-modify-write cycle to race. A one-time migration fans out the original array format, and it's failure-atomic: if a write fails mid-move, the old data stays put for a retry.Deletes are permanent by design. Deleting leaves a tombstone marker while any migration could still be in flight, so a slow write from another process can never resurrect a secret you just killed. Reads always honor the markers.
Values are stored verbatim. No trimming, no normalization. Trailing spaces in tokens are significant, and a vault that edits your secrets is a liability.
Everything stays on the machine. Raycast's
LocalStorageis encrypted at rest. No cloud, no accounts, no analytics. There's nothing to breach because there's nowhere to breach from.
What you get
One place for reusable values. URLs, emails, colors, JSON, numbers, strings. One searchable list instead of five apps.
Zero-friction retrieval. Type a fragment, press enter. The rickroll now deploys in under two seconds, bit intact.
Secrets that respect the room. Masked previews, reveal on demand, nothing in the cloud.
Type badges that guess right. Auto-detection with a manual override that actually sticks.
Grab it from the Raycast Store and hide something where nobody will find it. Somewhere out there, a staging admin panel has a help link nobody should click.