Lattice
A workspace for your research.
textarea in the terminal. Type text for a menu, or text buy milk to jot something down without opening anything. The notes are the same Markdown files the web a
ProductivityGoGitHub @Gitguy268OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Textarea in the terminal: `text` opens a menu, `text buy milk` jots a note. The same Markdown files as the web app, with sync to Obsidian and Apple Notes.
Loading the full README.
Read the full README ↗textarea in the terminal. Type text for a menu, or text buy milk to jot something down without opening anything. The notes are the same Markdown files the web app's Folder sync writes, and they sync with Obsidian, Apple Notes and any folder.
Features · Install · Use it · Sync · Settings · Limits · Contributing
Project page: gitguy268.github.io/textarea-cli · textarea-cli.vercel.app
brew trust gitguy268/tap
brew install gitguy268/tap/textarea-cli
Installs the text command.
Install Go 1.27 or newer.
Get the code:
git clone https://github.com/Gitguy268/textarea-cli.git
cd textarea-cli
Build it:
go build -o text ./cmd/text
Run it:
./text
./text buy milk
| What you get | |
|---|---|
| Menu | text opens a numbered menu. Pick a row with ↑/↓, its number or its letter. Esc goes back. |
| Quick capture | text call the plumber #home saves a note and returns to the prompt. echo … | text - reads stdin. |
| Today | text today walked the dog adds a timestamped line to the day's note. |
| Notes | Open with a fuzzy filter, read with Markdown highlighting, and edit in the built-in editor or $EDITOR. Pin, archive, backlinks, [[wikilinks]] and word counts. |
| Search | The web app's grammar: words, #tag, on:2026-10-25, is:pinned, is:archived. |
| Tasks | Every open - [ ] across your notes in one list. x ticks a task in its note. |
| Share | A link that opens the note in the web app, optionally with a password (AES-256-GCM), plus a QR code in the terminal. text open-link keeps a note from such a link. |
| Export | Plain text, Markdown, HTML, JSON, CSV, XML, RTF, LaTeX and YAML, to a file or the clipboard. |
| Sync | Two-way with any folder (iCloud Drive, Dropbox, Google Drive, OneDrive, a USB stick), an Obsidian vault, or Apple Notes on a Mac. |
| Trash | Deleted notes wait 30 days and can be restored. |
| Optional AI | Speech to text with whisper.cpp, and the web app's five writing tools with llama.cpp, a llamafile or Ollama. Both run on your machine, and their menu rows appear only when the tools are installed. |
With Go 1.27 or newer:
go install github.com/Gitguy268/textarea-cli/cmd/text@latest
Or build from a clone:
git clone https://github.com/Gitguy268/textarea-cli.git
cd textarea-cli
go build -o text ./cmd/text
It is pure Go (no CGO), so GOOS=linux, darwin or windows cross-compiles.
text # the menu
text buy milk #home # capture a note
text -- rm the old boxes # capture words that start like a command
echo "from a script" | text - # capture from stdin
text today called the bank # add a timestamped line to today's note
While reading a note: e edit, m all actions, Tab next task and x ticks it, L share link, y copy as, Esc back. ? in the menu lists every key.
Every command that lists notes takes --json. A note can be named by its file name, its id or the start of it, or any piece of its title (its first line when it has no heading) that only one note matches.
| Command | What it does |
|---|---|
text ls [query] | List notes, filtered by the search grammar |
text show <note> | Print a note |
text edit <note> | Edit in the built-in editor or $EDITOR |
text new [text] | Make a note and open it in the editor |
text tasks [--all] | Open tasks across the library (--all adds done ones) |
text link <note> [-p password] | Print a share link |
text open-link <url> | Keep a note from a share link |
text export <note> -f md | Export as txt, md, html, json, csv, xml, rtf, tex or yml |
text sync [name] [--dry-run] [--watch 30s] | Sync every target, or one |
text rm <note> | Move a note to the trash |
text trash [restore|empty] | The trash |
text config [path] | Print the settings, or where they live |
The library is a folder, ~/Documents/Textarea by default. Each note is Title.md with a short front matter block (id, created, updated, words, style) and then the text, exactly as the web app's Folder sync writes it. To share notes with the web app, point its Folder sync at the same folder; nothing needs converting.
text sync --add folder --path ~/Dropbox/Notes
text sync --add obsidian # finds your vault; --path picks one
text sync --add applenotes # macOS: a "Textarea" folder in Notes
text sync --dry-run # what the next sync would do
text sync # do it
Or use Sync › in the menu.
Sync is the same decision table as the web app's Folder sync, translated to Go and tested against it:
This is the beginning of the README. Read the rest at the original. Read the full README ↗