Getting Started
Quickly see Osprey working with sample data and a real rule using the demo script. It needs no code or configuration, and everything cleans up with a single command afterward. For a full development environment—running services individually, making changes, and debugging—see Local Development.
To run the demo:
-
Ensure you have prerequisites installed: Docker with the Compose v2 plugin, and the Docker daemon running. The script checks these before doing anything.
docker --version && docker compose versionThe stack also needs a number of free ports; the script checks them up front and names any that are taken. The ones you’ll actually visit are
5002(Osprey UI) and8888(Druid console); the worker and UI API use5001and5004. -
Run the script from a clone of the repo:
./demo.shOr without cloning anything first—this clones the repo into
./osprey-demofor you:curl -sSL https://raw.githubusercontent.com/roostorg/osprey/main/demo.sh | bashThe script starts the whole stack (Kafka, Druid, PostgreSQL, MinIO, and Osprey’s own worker, API, and UI—more than a dozen containers in all) plus a test-data producer that sends one synthetic post event per second. If it finds services from a previous run, it asks before stopping them; volumes from earlier demo runs are removed either way, so each demo starts from clean state. Expect the first run to spend a few minutes pulling and building images.
-
Wait for the “Demo Ready!” banner. The script waits for every service to report healthy, then for the first events to flow through, so this takes a couple of minutes. When it’s done, it opens the UI in your browser (or prints the URL to open yourself), pre-filled with a query for the last day of events.
What to try
The demo ruleset has one rule, ContainsHello: any post containing the word “hello” gets its author banned and labeled meow. The producer builds five-word posts from a small word pool, so roughly a third of the generated posts trigger it.
- Watch the event stream. The right panel shows events as they’re processed. Click one that matched
ContainsHelloand look at its extracted features and effects. - Filter with a query. Enter
ContainsHello == Truein the query bar to see only the posts that fired the rule; see Query Syntax for what else you can express. - Group with Top N. The pre-filled query groups by
UserId, showing which synthetic users have been banned the most. - Open the Rules Visualizer from the navigation bar to see the dependency graph between the demo’s features and rule.
The User Guide covers the full investigation workflow, and Writing Rules explains the SML behind ContainsHello and how to write your own rules.
Stopping the demo
From the repo folder (or osprey-demo/ if the script cloned for you):
docker compose --profile test_data down -v
This stops every container and deletes the volumes, including all generated demo data.
If something goes wrong
The script is a convenience wrapper; you can run the same stack directly and watch the logs:
docker compose --profile test_data up -d
docker compose logs --follow osprey-worker
Then open http://localhost:5002 once things settle. Troubleshooting covers common failure modes, and Local Development documents each service the demo starts.