Skip to content

Add developer docs: overview, architecture, and demo guide#8

Open
cargopete wants to merge 2 commits intographprotocol:juanmardefago/mvp-scopefrom
cargopete:petko/ssds-docs
Open

Add developer docs: overview, architecture, and demo guide#8
cargopete wants to merge 2 commits intographprotocol:juanmardefago/mvp-scopefrom
cargopete:petko/ssds-docs

Conversation

@cargopete
Copy link
Copy Markdown

@cargopete cargopete commented Apr 15, 2026

Summary

  • Adds docs/overview.md — what SSDS is, where it fits in The Graph ecosystem, payment flow summary, and current MVP state
  • Adds docs/architecture.md — component reference, network topology diagram, ports table, key design decisions, and repo layout
  • Adds docs/demo-guide.md — step-by-step guide for running the full local stack and streaming data through the payment loop (both reflex and manual modes)
  • Adds docs/SUMMARY.md — GitBook-compatible navigation index linking all docs

Test plan

  • Verify all links in SUMMARY.md resolve correctly
  • Follow the demo guide end-to-end and confirm accuracy

Copy link
Copy Markdown
Contributor

@maoueh maoueh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also a general comment. The README.md should be updated also to point more to the docs now otherwise we will have two places where to maintain development instructions as there is lot of crossing between README and some guide here.

Comment thread docs/architecture.md
Comment on lines +7 to +19
Runs alongside a Substreams client. Exposes a gRPC interface the client uses to manage sessions and report usage.

**Key RPCs:**

| RPC | What it does |
|-----|-------------|
| `InitSession` | Creates a session, resolves payer/signer, validates the collector |
| `ReportUsage` | Aggregates usage, creates RAVs, sends to provider; detects `NeedMoreFunds` |
| `EndSession` | Terminates the session and cleans up |

`payment_session_manager.go` manages the bidirectional stream to the Provider Gateway.

> **MVP note:** The consumer-facing Substreams-compatible proxy endpoint (MVP-007, MVP-017) is not yet implemented. Clients currently integrate via the `sds_sink` wrapper.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is outdated, @juanmardefago can confirm

Comment thread docs/architecture.md

### Consumer Sidecar (`consumer/sidecar/`)

Runs alongside a Substreams client. Exposes a gRPC interface the client uses to manage sessions and report usage.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should document here the expected relation with each sink, e.g. a single globally available consumer-sidecar, or 1:1 relation with each sink.

Comment thread docs/architecture.md

### Provider Plugin Gateway (`provider/plugin/`)

Registers auth, session, and usage-metering plugins with Firehose Core via the `BorrowWorkerRequest` / `Event` interfaces. Always runs colocated with the Provider Gateway — they communicate via local in-process notification, not gRPC.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A bit more meat could be added here with maybe some pointers to code. Also, who is the audience of this? Integrators, operators, etc?

Comment thread docs/demo-guide.md
cd substreams-data-service

# Check out the MVP scope branch
git checkout juanmardefago/mvp-scope
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be updated to latest branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants