oneko

A little cat that chases
your cursor. Natively.

The classic oneko, ported to Swift/AppKit. No Electron, no network access, no permission prompts โ€” a 320 KB menu-bar app that does one thing well.

$ brew install --cask oneko-swift/tap/oneko

or download the app ยท first-launch notes

320 KB~12 MB RAM~0.1% CPU macOS 13+Apple Silicon & IntelMIT-licensed

๐Ÿˆ The cat on this page is real โ€” move your mouse. On your Mac it chases the cursor across every app and screen.

Simple, like software used to be

Everything lives in a menu-bar icon. No settings window, no onboarding, no Dock icon, no updater phoning home. Just the cat.

Truly native

Pure Swift/AppKit. One 100 ms timer drives everything; when the cat sleeps or hides, it costs exactly zero.

Above everything, in the way of nothing

A click-through, transparent overlay: the cat renders over every app โ€” including full-screen apps, on all Spaces โ€” and never intercepts a click.

A faithful port

The original state machine, intact: 8-direction runs, the startled alert, face-washing, wall-scratching near screen edges, and dozing off when you stop moving.

Multi-monitor done right

Chases across displays, handles mixed Retina setups, and can be locked to one screen โ€” a lock that survives docking, unplugging and reboots.

Horizontal-only mode

Pin the cat to a row along the top or bottom edge, following only your cursor's x โ€” like the original strip-of-desk cat.

Private by construction

No network access, no analytics, no accessibility permissions. Open source, and ./build.sh rebuilds the whole app in seconds.

27 skins

The classic cat and dog, the original X11 characters, and 21 sheets of community pixel art. Click one โ€” the cat on this page will change too.

Scriptable, if you want it

Anything that can open a URL can control Oneko โ€” Apple Shortcuts, Raycast, or open in a script. There's also a Raycast extension with toggle, skin picker, speed and quit commands.

URL Effect
oneko://show / hide / toggle Show or hide the cat
oneko://skin/sakura Switch the sprite
oneko://speed/fast Set the chase speed
oneko://quit Quit the app