Skip to content

Commit 3a820bf

Browse files
committed
Add basic architecture doc
1 parent dccea12 commit 3a820bf

2 files changed

Lines changed: 37 additions & 0 deletions

File tree

src/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Summary
22

33
[Introduction](README.md)
4+
[Architecture](architecture.md)
45

56
# Administrator Guide
67

src/architecture.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Architecture
2+
3+
At its core, Seabird is an RPC API.
4+
5+
Currently, seabird exports 2 apis: a chat ingestion API, and a plugin API. In
6+
general, all components only interact with one of these.
7+
8+
## seabird-core
9+
10+
### Chat Ingestion API
11+
12+
The chat ingestion API consists of a single endpoint `IngestEvents` which
13+
starts a bidirectional stream. Outgoing messages are "commands" which allow
14+
seabird to inform the ingestion process to perform some sort of action, like
15+
sending a message or joining a channel. Incoming messages are the ingested
16+
events, allowing users of this API to inform seabird of new messages or other events.
17+
18+
### Plugin API
19+
20+
The plugin API consists of both an event stream and a number of methods which
21+
can be used to cause things to happen.
22+
23+
The streaming endpoint `StreamEvents` is a firehose of all events occuring
24+
across all seabird chat backends.
25+
26+
For callable methods, the `SendMessage` endpoint is the most commonly used.
27+
28+
## Chat Backends
29+
30+
Chat backends interact with the Chat Ingestion API and are used to connect some
31+
sort of chat server or network into the Seabird ecosystem.
32+
33+
## Plugins
34+
35+
Plugins interact with the Plugin API and are used to provide some sort of
36+
additional functionality, similar to what a chat bot would do.

0 commit comments

Comments
 (0)