Skip to content

Releases: roostorg/osprey

1.0.1

04 Mar 22:53
756ee78

Choose a tag to compare

What's Changed

1.0.1 is a small patch release follow-up to the recent 1.0 release. It mostly consists of bug fixes, small improvements for flexibility, and updates to the documentation and project/release management.

Bug fixes

Enhancements

  • configurable execution result store by @haileyok in #29
  • Add error_on_empty parameter to HasLabel UDF by @cmttt in #128
  • Support Optional types in comparison operators (<, >, <=, >=) by @alphonsoc in #146

Improved docs

Project/release management

New Contributors

Full Changelog: 1.0...1.0.1

1.0

29 Jan 02:26
ee3834e

Choose a tag to compare

1.0

Osprey is an open-source rules engine for trust and safety operations, currently running in production at Discord and Bluesky, processing 45M-61M events daily at Bluesky alone. v1 expands the open-source release to include more of the infrastructure that powers those deployments, so teams adopting Osprey can run it in production without rebuilding these pieces themselves.

This release adds three major features: a flexible labeling service, a Rust-based coordinator for horizontal scaling, and a real-time event stream for investigations. As part of making it easier to get started with Osprey with this release, we now build the documentation into a searchable website: https://roostorg.github.io/osprey/

Labeling Service

Added a labeling service to Osprey: a pluggable subsystem for attaching human and automated labels to any entity (users, IPs, emails, etc.). Labels feed into the rules engine and UI to improve detection and workflow.

  • Manual labeling in the UI (positive/negative/neutral) for Safety teams to annotate entities
  • Programmatic label mutations produced by rule executions are persisted by the labels service
  • Pluggable backend: implement LabelsServiceBase or provide a LabelsProvider to support different storage backends (Postgres plugin included)
  • Atomic read-modify-write context for safe concurrent updates and retries
  • Batch reads supported for performance during rule execution
  • Conflict resolution: simultaneous or contradictory mutations are resolved by status priority; dropped mutations are reported back
  • Rich label model: statuses (automatic vs manual), reasons (descriptions, features, created/expires), previous states, and label connotation (positive/negative/neutral)

Coordinator

Introduced the Osprey Coordinator: a Rust-based action distribution and load-balancing service that centralizes action ingestion and routes work to Osprey workers for reliable horizontal scaling.

  • Central action hub: accepts actions from Kafka/PubSub or directly via gRPC (bidirectional streaming and synchronous API)
  • Load balancing and prioritization: maintains a priority queue (sync vs async) and routes actions to workers based on priority and hashring/discovery logic
  • Reliable delivery: tracks outstanding actions, acknowledgements, and retries to ensure dependable processing
  • Service discovery: integrates with etcd so workers and coordinators can discover each other for scalable deployments
  • Metrics and observability: emits coordinator metrics to monitor throughput, latencies, and health
  • Pluggable deployment: runs as a separate service (Rust binary and Dockerfile); included docker-compose example and startup flags to enable the coordinator
  • Works with existing worker model: workers connect to the coordinator using long-lived gRPC streams to receive assigned actions

Event Stream

Added the Event Stream: a real-time, searchable investigation feed in the Osprey UI that surfaces events, rule verdicts, and extracted features to speed investigations and monitoring.

  • Live feed for real-time event monitoring and operator investigations
  • Searchable historical events using SML queries for ad-hoc investigations and pattern discovery
  • Built-in visibility into rule execution results and extracted features beside each event
  • Configurable presentation: card vs list views and user-selectable summary features
  • Improved integration with analytics and sinks so event metadata and classification data populate the stream
  • UI components and APIs included to support deep dives (event detail pages and feature location endpoints)

Contributors

Thanks to @EXBreder, @BinaryFiddler, @elijaharita, @caidanw, @jaredmiller13, @haileyok, @cmttt, @ryanprior, @ThisIsMissEm, and @julietshen for their continued contributions to Osprey, and welcome to our new contributors:

New Contributors

Full Changelog: 0.1...1.0

0.2

13 Jan 16:10
abb5718

Choose a tag to compare

0.2 Pre-release
Pre-release

This release includes an asset for the osprey_rpc library.

0.1

14 Nov 18:36
0e6faad

Choose a tag to compare

0.1 Pre-release
Pre-release

Release pre-coordinator integration.

Note from @cassidyjames: Effectively the same feature-wise as the upcoming 1.0 release, but 1.0 will include coordinator integration and any other upstreamed improvements from the reintegration of Osprey into internal Discord tools.