Skip to main content

🐻 bearcli

The missing CLI for Bear notes — read, search, export, and manage your notes from the terminal.

CI License: MIT Python 3.13+ macOS

Website · Commands · How it works


Bear stores your notes in a local SQLite database. bearcli reads it directly in read-only mode — Bear doesn't even need to be running — and performs every write through Bear's own x-callback-url API, verifying each change against the database. Your notes are never touched behind Bear's back.

Install

uv tool install bearcli        # or: uvx bearcli, pipx install bearcli

Or from a clone: uv sync, then uv run bearcli --help.

Quick start

bearcli list                       # 20 most recently modified notes
bearcli search "quarterly report"  # search titles, tags, and content
bearcli get <note-id>              # print a note's markdown
bearcli create "Idea" --tag inbox  # create a note
bearcli export ~/bear-backup       # export everything as markdown folders

Commands

Commands are grouped under note and tag; the most common ones (list, search, get, open, create) also work directly as shortcuts.

Browse & read

bearcli note list                            # 20 most recently modified
bearcli note list --limit 5 --tag work       # filters: tag (incl. nested), dates...
bearcli note list --modified-after 2026-07-01
bearcli note list --only pinned              # or: encrypted, trashed, archived
bearcli note list --all --trashed --archived
bearcli note list --ids                      # only identifiers, one per line

bearcli get C44D09DC-7F0E-43BB-BEB8-67E3A389A448
bearcli get C44D09DC-... --meta              # with YAML-style frontmatter
bearcli get C44D09DC-... -r                  # rewrite attachment refs to absolute paths
bearcli open C44D09DC-...                    # open in the Bear app

Search

bearcli search "invoice" --tag work -n 5     # case-insensitive substring
bearcli search "quarterly planing" --fuzzy   # typo-tolerant, ranked by score

Write

Writes go through Bear's x-callback-url API — the database itself is never written. These launch the Bear app if needed.

bearcli create "Meeting notes" --text "agenda..." --tag work
echo "follow-up item" | bearcli note append C44D09DC-...
bearcli note rename C44D09DC-... "New title"
bearcli get C44D09DC-... | sed 's/foo/bar/' | bearcli note replace C44D09DC-...
bearcli note attach C44D09DC-... screenshot.png   # ≤500 KB
bearcli note archive C44D09DC-...
bearcli note trash C44D09DC-...

Tags

bearcli tag list                             # all tags with note counts
bearcli note tag C44D09DC-... "work/ideas"   # add a tag to a note
bearcli note untag C44D09DC-... "work/ideas" # remove a tag from a note
bearcli tag rename old-name new-name         # across all notes
bearcli tag delete old-name                  # across all notes (asks first)

Export

Every note becomes a self-contained directory — <slug>/README.md plus its attachments — with a generated index, so GitHub renders the whole export as a browsable tree.

bearcli export ~/bear-backup
bearcli export ~/bear-backup --sync          # only rewrite notes that changed

Scripting

Every listing takes --format / -f: table (default), json, or tab-separated text built for pipes.

bearcli list -f json | jq -r '.[].title'
bearcli list -f text | cut -f1               # text is: id, modified, tags, status, title

Dates use ISO format (2026-07-01 or 2026-07-01T14:30). The database path defaults to Bear's standard location and can be overridden with --db or the BEAR_DB_PATH environment variable. Encrypted notes are listed but their content cannot be read.

Development

uv sync
uv run ruff format src/ && uv run ruff check src/
uv run ty check src/
uv run python scripts/check_docs.py          # docs must cover every command

Design notes and Bear database internals: docs/IMPLEMENTATION.md. Contributor/agent guidelines: AGENTS.md.

License

MIT · not affiliated with Shiny Frog

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bearcli-1.0.0.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bearcli-1.0.0-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file bearcli-1.0.0.tar.gz.

File metadata

  • Download URL: bearcli-1.0.0.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bearcli-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1395381a1c92873242484359f467dcc88cd39d9d6a86100e6ed9e13a14d22137
MD5 e212deaaa6ea9be14d61d6886dade8d2
BLAKE2b-256 af2f9829b02aef013caf1b90602231247f99e27da75410f47777bf8069353365

See more details on using hashes here.

File details

Details for the file bearcli-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: bearcli-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bearcli-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4c003e8d0b35628cccf9cd223eccfaae0cceee6935fd8e8ed67c825f5d5d7e38
MD5 79b461809899d8272fa1669ac0cfd4ff
BLAKE2b-256 4da85f3290f6bed480840f39a4dabb021625b34ae3efbf6c045078b3bdbf40b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page