Bitterbot is a local-first personal AI agent that runs on a user’s devices, keeps persistent memories, performs tasks, and can exchange reusable skills with other agents. It is intended for people who want a personal assistant that remains available across conversations and activities. The catalogue entries provide instructions and agents for working with Bitterbot.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add Bitterbot-AI/bitterbot-desktop --skill gifgrepgit clone --depth 1 https://github.com/Bitterbot-AI/bitterbot-desktopWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/bitterbot-ai/bitterbot-desktop/gifgrep)<a href="https://agentmods.dev/skills/bitterbot-ai/bitterbot-desktop/gifgrep"><img src="https://agentmods.dev/badge/skills/bitterbot-ai/bitterbot-desktop/gifgrep/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/bitterbot-ai/bitterbot-desktop/gifgrep"><img src="https://agentmods.dev/badge/skills/bitterbot-ai/bitterbot-desktop/gifgrep.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00021 | $0.00616 |
| Opus 5 | $0.00010 | $0.00308 |
| Sonnet 5 | $0.00004 | $0.00123 |
| Haiku 4.5 | $0.00002 | $0.00062 |
Grade A, and why
gifgrep scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
95% identical to gifgrep — 2 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
What it actually says
gifgrep
Use gifgrep to search GIF providers (Tenor/Giphy), browse in a TUI, download results, and extract stills or sheets.
GIF-Grab (gifgrep workflow)
- Search → preview → download → extract (still/sheet) for fast review and sharing.
Quick start
gifgrep cats --max 5gifgrep cats --format url | head -n 5gifgrep search --json cats | jq '.[0].url'gifgrep tui "office handshake"gifgrep cats --download --max 1 --format url
TUI + previews
- TUI:
gifgrep tui "query" - CLI still previews:
--thumbs(Kitty/Ghostty only; still frame)
Download + reveal
--downloadsaves to~/Downloads--revealshows the last download in Finder
Stills + sheets
gifgrep still ./clip.gif --at 1.5s -o still.pnggifgrep sheet ./clip.gif --frames 9 --cols 3 -o sheet.png- Sheets = single PNG grid of sampled frames (great for quick review, docs, PRs, chat).
- Tune:
--frames(count),--cols(grid width),--padding(spacing).
Providers
--source auto|tenor|giphyGIPHY_API_KEYrequired for--source giphyTENOR_API_KEYoptional (Tenor demo key used if unset)
Output
--jsonprints an array of results (id,title,url,preview_url,tags,width,height)--formatfor pipe-friendly fields (e.g.,url)
Environment tweaks
GIFGREP_SOFTWARE_ANIM=1to force software animationGIFGREP_CELL_ASPECT=0.5to tweak preview geometry
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 80 lines · 21 tokens per session scan A 01d6e695cc64
gifgrep is a skill published in the GitHub repository Bitterbot-AI/bitterbot-desktop (2,461 stars, last pushed 2d ago), licensed MIT. It adds 21 tokens to every session and 616 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. It is 95% identical to gifgrep, differing in 2 lines, and is treated as a copy.
Other skills, from other repositories
image-prompt-cinematography
Cinematic image and video prompt discipline.
aimh-worldbook
A tool for breaking very long books or reference texts into a structured world bible: a collection of characters, places, timelines, concepts, storylines, and chapter references.
oc-dossier
A system for storing and recalling original characters, such as fictional people created for stories. It can build character records from text or files and retrieve them later for role-play.
export-as-pptx-editable
Native text & shapes — editable in PowerPoint.
export-as-pptx-screenshots
Flat images — pixel-perfect but not editable.
pptx
A guide for turning a paper, outline, or structured text into a PowerPoint presentation. It covers an 8–12-slide structure, concise slide points, and generation of a .pptx file.