Usage

bestmate ingest [content]
bestmate ingest --file [path]
bestmate ingest [directory/]

Examples

# Ingest text directly
bestmate ingest "Meeting notes: We decided to use Go for the CLI"

# Ingest a file
bestmate ingest --file meeting-notes.md --title "Q1 Planning"

# Ingest from stdin
cat document.txt | bestmate ingest --title "Doc"

# Ingest an entire directory (auto-detects)
bestmate ingest ./my-notes/

# With visibility controls
bestmate ingest --file decisions.md --org --title "Team Decisions"
bestmate ingest --file notes.md --visible-to john@company.com --title "For John"

# Skip metadata extraction (faster)
bestmate ingest --file raw-data.txt --skip-extract

# Target a specific twin's KB
bestmate ingest --file client-notes.md --twin acme

Flags

FlagShortDescription
--file-fRead content from file
--title-tTitle for the content
--source-sSource identifier (default: cli)
--tagsTags (comma-separated)
--privateOnly you can query (default)
--teamTeam members can query
--orgEveryone in org can query
--team-idTeam ID (with --team)
--visible-toShare with specific emails
--twinTarget twin(s) by name
--recursive-rRecursively ingest directory
--skip-extractSkip LLM metadata extraction
--skip-scanSkip secret scanning

Directory Ingestion

When you pass a directory path, Bestmate automatically finds all .md, .markdown, and .txt files and ingests them in batches:
bestmate ingest ./obsidian-vault/
# Found 47 files in ./obsidian-vault/
# Uploading batch 1-10 of 47...
# Uploading batch 11-20 of 47...
# ...
# ✅ Done: 45 created, 2 skipped, 0 failed

Visibility

LevelWho can query
--privateOnly you (default)
--teamYour team members
--orgEveryone in your organization
--visible-toSpecific users by email