Skip to content

siraht/Infogest

Repository files navigation

Infogest CLI

Infogest is a daily briefing pipeline that surfaces new developments and incrementally grows a curated knowledge base. Each run collects fresh signals from X and external documents, synthesizes a concise brief, and applies a reviewable patch that extends the KB with the new, verified learnings.

Install

From the repo root:

pip install -e .

Configuration

Edit config/config.yaml to set watchlist handles, querypack, and limits. Set x_sources.enabled to choose between timeline and search ingestion.

Environment

Copy config/.env.example to .env and set:

  • XAI_API_KEY for xAI calls
  • TWITTER_API_KEY, TWITTER_API_SECRET, TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_SECRET for timeline access and tweet lookup
  • X_TIMELINE_USER_ID or X_TIMELINE_USERNAME (optional override)
  • INFOGEST_LLM_ENGINE=command or xai
  • INFOGEST_LLM_CMD if using the command engine (defaults to ./scripts/claude_cmd.sh)

Initialize KB

infogest init
infogest check-kb

Daily workflow (new developments + KB growth)

infogest run

Each run produces a dated bundle under runs/YYYY-MM-DD/run_<timestampZ>/ with:

  • A merged corpus of the latest inputs
  • A daily brief focused on what is newly developed since the previous run
  • A KB patch that incrementally updates the knowledge base

The patch is applied automatically by default, so the KB continuously compounds as new developments appear.

For a safe scaffolding check without API calls:

infogest run --dry-run

Manual ingest

infogest ingest /path/to/file.pdf --kind paper
infogest ingest /path/to/folder --kind notes

If ingested content contains X/Twitter status links, Infogest will look up the tweet text via the X API (requires OAuth 1.0a keys).

External input queue

infogest add /path/to/file.md
infogest add /path/to/folder
infogest normalize <input_id>

Synthesis only

infogest synth --corpus runs/YYYY-MM-DD/run_<id>/10_inputs/merged_corpus.jsonl

Patch apply

infogest apply --patch runs/YYYY-MM-DD/run_<id>/20_decisions/kb.patch

Feedback loop

infogest feedback --date YYYY-MM-DD

Switch LLM engines

Set INFOGEST_LLM_ENGINE:

  • command: uses INFOGEST_LLM_CMD and expects JSON output
  • xai: uses xAI structured outputs

For Claude Code non-interactive runs, ./scripts/claude_cmd.sh reads the system and user prompts from temp files (INFOGEST_SYSTEM_FILE/INFOGEST_USER_FILE) and calls:

claude -p --no-session-persistence --tools "" --system-prompt "<system>" "<user>"

If you want to add model selection or other flags, edit scripts/claude_cmd.sh. Note: very large prompts may exceed OS command-line length limits since prompts are passed as CLI arguments. A potential fix is switching the wrapper to a streaming/stdin input mode (e.g., Claude’s --input-format stream-json), but this repo does not implement that yet.

Add new ingest adapters

Implement a new module under infogest/adapters/ that produces ContentRecord JSONL and wire it into the CLI.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors