Add change feed API for streaming graph mutations to consumers

Open
#238 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Quiet
Tech stack
go

Research direction

Start with docs/docs/roadmap.md and trace how Meteor’s incremental delivery represents graph deltas before choosing an API transport. Define the event types, filtering, replay, ordering, back-pressure, and update-state guarantees, then verify that the design covers all listed consumer and reconnection requirements.

Written by the indexing model from the issue text.

Description

Context

Compass is currently a pull-only store — you query it to get data. AI agents and downstream systems that need to stay current should be able to subscribe to graph changes rather than polling.

Scope

  • Streaming API endpoint that emits graph mutations as they happen
  • Event types: entity.created, entity.updated, entity.deleted, relationship.created, relationship.deleted
  • Support filtering by entity type, namespace, or relationship type
  • Include before/after state for updates (or at minimum, changed fields)
  • Transport options: SSE (Server-Sent Events), WebSocket, or gRPC streaming

Design Considerations

  • Back-pressure handling for slow consumers
  • Cursor-based replay for consumers that disconnect and reconnect
  • Event ordering guarantees within a namespace
  • Integration with Meteor's incremental delivery — Meteor pushes deltas, Compass propagates them

Why

AI agents maintaining cached context can subscribe and keep their view fresh without polling. Downstream systems (monitoring, alerting, compliance) can react to graph changes in real time.

References

Dominant language
Go
Stars
72
Forks
9
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from raystack/compass

All issues in raystack/compass

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.