https://github.com/seabird-chat/seabird-core
An over-engineered gRPC service for accessing chat services
https://github.com/seabird-chat/seabird-core
grpc grpc-service irc rust seabird
Last synced: 2 months ago
JSON representation
An over-engineered gRPC service for accessing chat services
- Host: GitHub
- URL: https://github.com/seabird-chat/seabird-core
- Owner: seabird-chat
- License: mit
- Created: 2020-04-23T23:55:56.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2025-08-13T05:00:59.000Z (8 months ago)
- Last Synced: 2026-01-15T06:58:23.246Z (3 months ago)
- Topics: grpc, grpc-service, irc, rust, seabird
- Language: Rust
- Homepage:
- Size: 198 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# seabird-core
[](https://github.com/seabird-chat/seabird-core)
[](https://github.com/seabird-chat/seabird-core/actions/workflows/docker-publish.yml)
Seabird has been an IRC bot for the last 10 years in many different
incarnations. This version is a gRPC service which exports a number of functions
to easily interact with chat services.
This server acts only as an event broker - you will need both a running chat
backend and some sort of plugin in order for anything visible to happen.
The server is implemented in Rust and uses `tonic` for a gRPC server
implementation.
## Requirements
- Rust 1.83
## Building
The easiest way to build and deploy `seabird-core` is to use the [official
docker image].
In order to build this, you can use the following:
```sh
docker build -t seabird-core:latest .
```
If you want to develop locally, simply use the normal cargo workflow in order to
build/run seabird-core:
```sh
cargo run
```
Note that because this generates code based on the protobufs, you may need to run
`git submodule update --init` to make sure they are up to date.
## Configuring
### Environment Variables
For production, it is generally recommended that environment variables be
configured in the environment, but for dev, both implementations will
conveniently load any `.env` file in the working directory of the running
service.
- `DATABASE_URL` (required) - where to place the sqlite database seabird-core will use.
This should be in a URL format, so `sqlite:tokens.db` will be relative to the current
directory and `sqlite:///path/to/tokens.db` will be absolute.
- `SEABIRD_BIND_HOST` (optional, defaults to `0.0.0.0:11235`) - which host/port to bind
the gRPC service to. Note that it will not be tls encrypted, so you may want
to put it behind a reverse proxy.
- `RUST_LOG` (optional, defaults to `info,seabird::server=trace`) - this is a
common rust environment variable documented here because we set a default. All
seabird functionality is exposed under `seabird`.
[official docker image]: https://github.com/seabird-chat/seabird-core/pkgs/container/seabird-core