Repository navigation
docs: update for 1.1 #421
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
docs: update for 1.1 #421
Changes from 52 commits
Commits
Show all changes
55 commits
Select commit
Hold shift + click to select a range
c9090b6
docs: Use refreshed theme from community repo
cassidyjames 1969819
docs: fix broken link to research-personas.md in README
cassidyjames 2585b79
docs: fix stale docs/DEVELOPMENT.md references in AGENTS.md
cassidyjames d5c1967
docs: match manage.md section headers to on-page "Registry" titles
cassidyjames 2b6031f
docs: add CLI reference for osprey-cli, osprey-stress, osprey-async-cli
cassidyjames 07af56e
docs: link operate.md bulk actions to CLI reference
cassidyjames dddf8dd
docs: explain why Osprey rules use SML instead of plain Python (close…
cassidyjames ff307b8
docs: document Osprey's data flow — getting data in and out (closes #…
cassidyjames 88dc3e5
docs: add missing plugin hooks to development README hooks table
cassidyjames d7f2c89
docs: add Integrations & Plugins guide covering UDFs, sinks, hashing,…
cassidyjames ea44720
docs: style pass on new pages, cut space-separated em-dashes
cassidyjames 87110aa
docs: clean up cli-reference for clarity
cassidyjames 792cd5a
CHANGELOG: Correct `Experiment` in changelog
cassidyjames 106e80d
docs: Fix some outdated commands and paths
cassidyjames 189a289
docs: link coordinator README via GitHub URL
cassidyjames b3341af
docs: fix apply_label anchor in operate.md
cassidyjames dfc92d5
docs: align sidebar titles with page headings
cassidyjames 1362648
docs: fix pre-commit autoupdate command name
cassidyjames ba490d8
docs: describe ruff and mypy config in prose
cassidyjames 434e107
docs: Americanize appearance.md, drop emoji column
cassidyjames abe15c3
docs: drop cheerleading exclamation in research-personas
cassidyjames 7405dee
docs: name the Yeet buttons in Investigate
cassidyjames 46f1de9
docs: shrink workflow.md to Osprey-specific facts
cassidyjames be79d8f
demo: advertise the rule that actually exists
cassidyjames 0f8bac5
docs: add Getting Started quickstart
cassidyjames 55c0482
README: add Try it section, link the docs site
cassidyjames d41e50d
docs: ship one integrations page, in the Development Guide
cassidyjames 73aece2
docs: restructure dev guide landing like Coop's
cassidyjames f23790f
docs: drop unnecessary exact count in workflow.md
cassidyjames 715a7d6
docs: catch Local Development up to the 1.1 stack
cassidyjames 1a821ab
docs: document event stream first-load defaults
cassidyjames 7579f45
docs: tighten User Guide landing, add screenshots
cassidyjames f556bed
docs: link directories instead of README files
cassidyjames e3ff411
docs: add Concepts page to the User Guide
cassidyjames 8fddcc8
docs: point query-syntax at Concepts instead of redefining
cassidyjames d89bd2a
docs: remove link to personas from integrations page
cassidyjames a8161cf
Merge branch 'main' into cassidyjames/docs-1.1
cassidyjames 813ceac
docs: Consolodate appearance into user README
cassidyjames 2a602bb
docs: Move concepts to concepts section; update terminology
cassidyjames 14233bf
docs: Update Data Flow page terminology
cassidyjames 0e812e0
docs: Consistently use "event" language
cassidyjames e6e6561
docs: Fix old reference to Appearance page
cassidyjames eefc9b9
docs: rewrite Welcome as an onboarding page
cassidyjames c05f176
docs: rework Welcome ordering a tiny bit
cassidyjames bac8ba0
docs: fix relative links broken by the Concepts move
cassidyjames 2249881
docs: split Writing Rules into its own section
cassidyjames 8d887f8
docs: give transparent images a solid backdrop
cassidyjames e829bc8
docs: split adopter-facing pages into an Integration Guide
cassidyjames b991e09
README: consolidate the intro and cut boilerplate
cassidyjames 81b0db7
docs: fix User Guide claims against the actual interface
cassidyjames 5c5936f
docs: rewrite Writing Rules' stiff legacy passages
cassidyjames 46578ba
docs: mechanical style fixes from the tone sweep
cassidyjames 621a3b0
docs: fix inaccuracies found in the 1.1 accuracy pass
julietshen ab5dca3
docs: fix broken rules links and verified review findings
julietshen 3ea3309
Merge branch 'main' into cassidyjames/docs-1.1
julietshen File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| # Concepts | ||
|
|
||
| Osprey watches a stream of events happening on your platform, runs each one through your rules in real time, and records what it found so analysts can query and act on it. This page defines the terms the rest of these docs (and the UI itself) use. They're listed in the order data flows through Osprey, and later concepts build on earlier ones, so it's worth a read from start to finish. | ||
|
|
||
| Throughout the docs are examples of moderating a small social network where users create posts; the same concepts adapt to any platform where people interact. | ||
|
|
||
| ## Events (and actions) | ||
|
|
||
| Anything that happens on your platform—e.g. someone registers an account, creates a post, sends a message, or reacts to content—can be sent to Osprey as an **event**, as it happens. Each event arrives with a name, like `create_post`, and whatever JSON data your platform sent along, e.g. the author's user ID and the post text "hello world." | ||
|
|
||
| > [!NOTE] | ||
| > You may also come across the term **action**: Osprey's submission API and rules engine historically call each incoming event an action, which is why the query bar filters on `ActionName` even though the UI's live feed is the Event Stream. In this context, they're the same: one event in, one `ActionName` recorded. | ||
|
|
||
| ## Features | ||
|
|
||
| A **feature** is a named value that your rules extract from each event: `PostText`, `UserId`, `AccountAgeSeconds`. Features are what you query on; every feature your rules define is queryable by name, unless its name starts with an underscore, which keeps it private to the rule file that defined it. | ||
|
|
||
| For a "hello world" post, your rules might extract `UserId`, `PostText`, and `EventType` as features. | ||
|
|
||
| ## Entities | ||
|
|
||
| An **entity** is a feature that uniquely identifies something on your platform: a user ID, an email address, an IP address. Entities are declared with a type (like `User`) so Osprey knows which values refer to the same thing across many events. That identity is what makes [labels](#labels) possible, and it's how selecting an entity in the UI can open a view of everything Osprey knows about it. | ||
|
|
||
| In our example, `UserId` would be declared as an entity: the same user posts many times, and you want Osprey to remember them. | ||
|
|
||
| ## Rules | ||
|
|
||
| A **rule** is a named condition over features, written in Osprey's rule language, SML. Rules are evaluated against every event as it arrives. On their own, rules just return a boolean true/false (which is itself queryable, like any feature). Rules can be wired to [effects](#effects). | ||
|
|
||
| In our example, a rule might cover "the event is a post creation and the post text contains 'hello'." | ||
|
|
||
| Rules live as code in your Osprey deployment alongside the Osprey code itself. See [Writing Rules](rules/) for more detail. | ||
|
|
||
| ## Effects | ||
|
|
||
| An **effect** is what a matched rule does beyond evaluating; e.g. ban the user, add a label to an entity, declare a verdict. Effects are recorded on the event's result, so an investigator can always see afterward exactly what Osprey did and why. | ||
|
|
||
| When the demo's `ContainsHello` rule matches our "hello world" post, it fires two effects: a ban for the author, and a `meow` label added to them. | ||
|
|
||
| ## Labels | ||
|
|
||
| A **label** is a tag on an entity that persists across events—Osprey's memory. Rules add and remove labels as an effect, and can also _check_ labels, so past decisions inform future ones: "flag this post if its author was previously labeled a spammer." You can also add or remove labels by hand from the UI, one entity at a time or in bulk. | ||
|
|
||
| Labels have a name, the entity types they apply to, and a connotation (positive, negative, or neutral). See [Labels](user/investigate/labels.md) for more information about how they're used for investigations. | ||
|
|
||
| ## Verdicts | ||
|
|
||
| A **verdict** is Osprey's answer when a caller is waiting for one. Most deployments feed Osprey from a queue and read results the same way, but a service can also submit an event synchronously and get a response; rules declare verdict strings, and those—along with any labels applied—are what the caller gets back. If your deployment only consumes results asynchronously, you may never handle a verdict directly, though you can spot them among an event's recorded features in the UI. | ||
|
|
||
| ## Results, and where they surface | ||
|
|
||
| Every processed event produces an execution result: the extracted features, the rules that matched, and the effects that fired. Results are indexed for querying—that's what the whole [Investigate](user/investigate/) side of the UI reads. The query bar filters results by feature (`ContainsHello == True`), charts aggregate them over time, Top N groups them by any feature, and the Event Stream shows them one by one as they happen. Clicking any entity opens its details: current labels and its history on your platform. | ||
|
|
||
| How results get from the engine to those views (and into your own systems) is plumbing your developers control; the [Data Flow](integration/data-flow.md) page covers it. | ||
|
|
||
| ## Where to go from here | ||
|
|
||
| Try these ideas out on live sample data by running the [demo](development/), then head to [Investigate](user/investigate/) to learn the query workflow, or [Writing Rules](rules/) when you're ready to automate a decision of your own. | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.