Omostrich

A little ostrich that guards your Nostr key — and never, ever hands it over.

Omostrich is one icon in the bar of your Omarchy desktop. Click it to unlock, write a short note, and send it out to Nostr. That's the whole idea.

Let's start simple

So... what even is this thing?

Imagine you have a diary, but instead of hiding it under your bed, you want to shout a page of it out loud so anyone in the world can read it. Nostr is a place on the internet where people do exactly that — they post short notes that show up on lots of different apps at once, kind of like a walkie-talkie channel anyone can tune into.

Explain it like I'm eight

To prove a note on Nostr is really from you and not someone pretending to be you, you get a special secret key — like a magic stamp only you own. Every note you send gets stamped with it. The tricky part: if anyone else ever sees your stamp, they can pretend to be you forever. So the stamp has to stay locked up, always.

Omostrich is the locked box that holds your stamp for you. You never carry the stamp around loose in your pocket. You ask Omostrich to stamp a note, it does the stamping inside the box, and only the finished, stamped note comes back out.

The bar icon

What Omostrich actually does

One ostrich icon lives in your Omarchy bar. It dims when its little guard-robot (the "daemon") isn't running, and it wears a small red badge when something needs your yes-or-no.

🔐

Unlock with a password

You paste in your secret key once, ever. After that, just a passphrase unlocks the box — for 5 minutes, 30 minutes, up to a full day, your choice.

📝

Write and send a note

A text box that grows as you type. Press Enter to post. It tells you exactly which mailboxes (relays) actually got your note, not just a vague "done."

🖼️

Attach a picture

Paste an image, pick a file, or grab one from your clipboard. Omostrich uploads it and drops the link into your note for you.

🪪

Show who you are

Once unlocked, the icon shows your name and picture — so you always know which "you" you're posting as.

🔔

Gentle alerts

A quiet pop-up when someone mentions you, messages you, or sends a tip — it never peeks inside a private message to make the alert, it just says "you got one."

🤝

Sign for other apps, carefully

Other Nostr apps can ask Omostrich to sign things on your behalf (this is called NIP-46). You see exactly what's being asked and approve or deny it — nothing happens blindly.

There's also a shortcut: press SUPER + N anywhere on your desktop and a tiny compose box pops up, already to ready to type — no clicking through the bar first.

What Omostrich will not do

  • It does not show you a feed or a timeline — no scrolling, no reading other people's notes here.
  • It does not open your messages for you — alerts just say "something arrived," they don't decrypt it.
  • It does not hold more than one key at a time — one box, one identity, on purpose.
  • It does not let any app sign things without asking you first, every time something new is requested.

The important part

How it keeps your secret key safe

This is the whole reason Omostrich exists, so here it is in plain words — followed by what's actually happening under the hood for anyone who wants the details.

Your key is locked in a digital safe

Kid version: your secret stamp gets turned into a jumble of nonsense that only your passphrase can unjumble.

Under the hood: the key is encrypted at rest with AES-256-GCM, using a key derived from your passphrase via scrypt with a deliberately expensive work factor — that makes guessing your passphrase against a stolen file slow and costly.

Only one program ever opens the safe

Kid version: one small guard-robot (a background helper called the daemon) is the only thing allowed to unlock the box, and only while you've told it to stay unlocked.

Under the hood: the bar widget is Quickshell QML — it never imports, decrypts, or even touches the key. Every action shells out to a small control command and reads back a plain response.

Locked means locked, no exceptions

Kid version: if the box is shut, nothing gets stamped — not even a tiny bit, not even "just this once."

Under the hood: every signing path checks the unlock state first and refuses outright if it isn't unlocked. There's no cached signature and no back door.

Nobody can peek over its shoulder

Kid version: the secret key is never written down somewhere a nosy program could spot it.

Under the hood: secrets are never passed as command-line arguments (which any other process on your machine could read) — they're piped in over standard input instead, and this was verified by actually inspecting a running process.

It writes down what it did — never the secret itself

Kid version: the guard-robot keeps a logbook of "I stamped this note at this time," but it never writes the stamp itself in the book.

Under the hood: an audit log records event kind, event id, a truncated content hash, and length for every signature — never the key, never the passphrase.

It locks itself back up if you forget

Kid version: leave it alone for a while and the box quietly closes on its own.

Under the hood: it auto-locks after your configured idle window, and runs as a sandboxed systemd user service with core dumps disabled, a read-only home directory, and write access limited to exactly the two folders it needs.

A sibling project

Meet Omostrich‑DB

Optional

Kid version: imagine a little notebook that sits next to the safe and keeps count — "you posted 4 notes this week, and 12 people liked one of them." It never opens the safe. It never sees your stamp. It just counts things that were already made public.

Under the hood: Omostrich‑DB is a separate, read-only helper. A background process watches relays for your own notes and the replies, reactions, and tips that mention you, and stores them in a local, private database (nostrdb) on your own machine — so questions like "how many times did I post this week" answer instantly, without asking the internet each time. It only ever needs your public identity — never your key, never your passphrase, and it keeps working even if Omostrich itself is locked.

It's entirely optional — Omostrich works completely on its own without it.

For grown-ups

Installing it on Omarchy

Requires Node.js and the Omarchy desktop.

git clone https://github.com/ninepointlabs/omostrich ~/Projects/omostrich
cd ~/Projects/omostrich
npm ci                 # installs exactly what's pinned in package-lock.json
./install.sh           # installs + starts the systemd --user service
cd plugin
./install.sh           # deploys the bar widget + Super+N overlay

Then open the new ostrich icon in your bar, paste in your key once, set a passphrase, and you're set up. Full details, including the optional SUPER + N keybinding and how to connect an AI agent's explicit-ask-only posting access, live in the project README.

WhatWhere it lives
Source codegithub.com/ninepointlabs/omostrich
Optional stats helpergithub.com/ninepointlabs/omostrich-db
Encrypted vault~/.local/share/omostrich/
Plugin idtim.omostrich
LicenseMIT