Unpublished
Keeps the page out of cowyo's sitemap and asks search engines not to index it. It is not private; anyone with the URL can still open it.
about cowyo
cowyo is for the text that needs a place right now: a running list, a handoff, meeting notes, or a thought shared across a room.
page controls, plainly
Choose from five modes: unpublished, locked, encrypted block, private E2EE, or self-destruct. Each changes how a page is found, edited, protected, or removed.
Keeps the page out of cowyo's sitemap and asks search engines not to index it. It is not private; anyone with the URL can still open it.
Prevents changes until the page password is entered. It does not hide the text, which stays readable to anyone with the URL.
Password-encrypts the current text in your browser as a signed block. Ordinary text can remain around it, and the page stays an ordinary page.
Encrypts every save in the browser. The server stores only
ciphertext and a one-way write-capability hash. Keep the full
#key URL: it grants read and write access, cannot be
recovered if lost, and never reaches the server.
An ordinary page is returned on its next load, then deleted. A private page is consumed only after a browser proves it has the write capability.
Starting private means the server never receives plaintext. Converting an existing page protects its current replacement and future saves, but plaintext already sent may remain in database history, backups, or logs. Because the server delivers the browser code, a server able to replace that JavaScript is outside this client-side threat model. Configured Umami scripts run on private pages too and can access the URL fragment and decrypted editor content, so enable only providers you trust. AdSense is omitted from private pages.
full end-to-end encryption
A private scratchpad encrypts the entire document in your browser before cowyo receives it. The complete URL is both the way in and the only key to the plaintext.
A key made in your browser. New private pages use
a random 256-bit key stored after #key= in the URL.
That fragment is not sent in HTTP or WebSocket requests.
Separate keys, every save. The browser derives independent content and write keys, then encrypts the whole document with a fresh nonce. cowyo stores ciphertext and a one-way write-capability hash.
The full URL grants access. Anyone with it can decrypt and edit. Without the right key, the page is read-only ciphertext.
There is no recovery or reset. cowyo never has
the content key. Lose the complete #key URL and the
plaintext is gone; share it carefully because it grants both
read and write access.
Some metadata remains visible. The server sees the page path, ciphertext size, timing, IP address, cursor offsets, and operations. Conversion cannot erase plaintext already sent from history, backups, or logs. A server that replaces the delivered JavaScript is outside this threat model. Configured Umami scripts also run here and can access the URL fragment and decrypted editor content. AdSense is omitted from private pages.
browser optional
Every ordinary scratchpad doubles as a plain-text endpoint. Private pages return only their ciphertext and reject curl writes and page-control API mutations.
01 / read
curl receives only the exact stored text. Print it, pipe it to another command, or save it locally.
curl https://cowyo.com/my-notes
curl https://cowyo.com/my-notes \
> notes.txt
02 / create
POST a file to the home URL. cowyo chooses a memorable name and prints the new page URL.
curl --data-binary @notes.txt \
https://cowyo.com/
03 / write
POST to any path to create or replace it. Use
@- to read from stdin.
printf '%s\n' 'deploy at 3pm' | \
curl --data-binary @- \
https://cowyo.com/team-handoff
page controls
The versioned API can publish, lock, encrypt, or arm an existing page for self destruct. Successful changes appear immediately for people with the page open.
Encryption stays local: send a compatible encrypted block, not the encryption password. Permanent private pages do not accept API mutations.
curl --json '{"operation":"publish"}' \
https://cowyo.com/api/v1/pages/my-notes/operations
A named write replaces the page's complete contents. Locked pages reject ordinary writes until they are unlocked in the browser or through the API.
open source, by design
cowyo is built by schollz and released under the MIT license. Inspect the code, host your own copy, or help keep the public service running.