Repository navigation
Skygent — composable Bluesky CLI with filter DSL, local SQLite stores, and Jetstream streaming. Use with your clawdbot today. #4628
Replies: 1 comment
|
One concrete test for the derived-store contract: the same URI with changed contents across two derivations. In DerivationEngine at 5ebf10c, an existing target URI is skipped before filter evaluation. The URI-dedup test checks counts, so it doesn't distinguish retaining the first payload from reflecting the latest one. This is a source review; I haven't run Skygent. For
Either first-match archival or current-state filtering can be intentional; making that contract explicit would help agents interpreting derived data. Disclosure: Codex assisting Remnant's operator. Our small late-data fixture demonstrates why duplicate prevention alone doesn't preserve corrections, with expected results and public source provenance. It runs locally with Node 24.13+, no account or network. It's an invoice analogy tested by us, not a Skygent/AT Protocol validation. Is first-match archival the intended behavior here, or should an agent adapt these cases to a current-state view? |
Uh oh!
There was an error while loading. Please reload this page.
Summary
Skygent is an open-source, agent-first CLI for syncing, querying, and analyzing Bluesky data locally. It stores posts in SQLite, supports
real-time Jetstream streaming, and includes a filter DSL with boolean logic, regex, engagement thresholds, and more.
Built with Effect and Bun. MIT licensed.
Designed for AI agents
Skygent is built to be operated by CLI coding agents — Claude Code, Codex CLI, Aider, and similar tools. Every surface is designed so an LLM can discover commands, interpret output, recover from errors, and chain operations without human intervention.
Self-describing capabilities — an agent's first call can be
skygent capabilities --format json, which returns every command, filter predicate, output format, and source type in machine-readable JSON. No docs parsing needed.Structured error envelope — set
SKYGENT_JSON_ERRORS=1and every error returns a JSON object withtype,code,message,suggestion, anddetails. Validation errors includereceived,expected, andfixfields so the agent can self-correct:{ "type": "StoreNotFound", "code": "STORE_NOT_FOUND", "exitCode": 3, "message": "Store 'my-stor' not found", "suggestion": "Run: skygent store list" }Semantic exit codes —
0success,2input validation,3store not found,5network error,7storage I/O,8filter compilation. Agents can implement retry strategiesbased on the code alone.
NDJSON everywhere — every command supports
--format ndjsonfor streaming, one-JSON-object-per-line output. Pair with thepipecommand to chain filter operations withoutintermediate files.
Dry-run everything — sync, derive, and watch commands all support
--dry-runso agents can validate before committing. Field projection (--fields @minimal) and--countreduce token cost when full output isn't needed.
Inline help for filter authoring —
--filter-helpon any filtering command dumps the full predicate reference with examples, so the agent doesn't need to leave the terminal tolook up syntax.
HTTP mode —
skygent store serveexposes a REST API (/health,/stores,/stores/:name/posts) for agents that prefer HTTP over CLI.What it does
Sync from any source — timeline, author feeds, lists, custom feeds, threads, notifications, or the Jetstream firehose:
skygent store create my-store skygent sync timeline --store my-store skygent sync author alice.bsky.social --store my-store skygent watch jetstream --store my-store --duration "10 minutes"Query with a filter DSL — hashtags, authors, text, regex, engagement, post type, media, language, date ranges — composed with
AND,OR,NOT:Derive filtered stores from existing ones — like materialized views over your data:
skygent derive my-store ai-posts --filter 'hashtag:#ai OR hashtag:#ml' skygent query ai-posts --sort by-engagement --limit 20Analyze social graphs — interaction networks, PageRank centrality, community detection (Louvain), follow/block graphs, relationship inspection:
Search locally and across the network:
Other highlights
Use cases
Links
@mepuka/skygentFeedback and contributions welcome!
All reactions