DEVELOPMENT ENVIRONMENT

~liljamo/emerwen

ref: f7aea62c45f870fd5ff3d14d88d5fab16b490c91 emerwen/README.md -rw-r--r-- 1.8 KiB
f7aea62cJonni Liljamo docs: add development notes to README.md 12 days ago

#emerwen

emerwen is a WIP host and service monitoring solution.

emerwen stands for shepherdess in Quenya.

It's architected as one Master server, which configures Workers who notify the Master about the status of their targets.

gRPC is used for the Master<->Worker connection. A custom TCP protocol was planned and experimented with, but scrapped due to me not having done it before and not wanting to deal with the burden of managing all the connections manually etc, etc. tldr: gRPC was easier lmao.

#What's next (short-term TODO)

  • Actually checking auth tokens.
  • Master database (redb?)
  • Master web UI (leptos + leptos_oidc) for configuring workers.

#Future (non-critical TODO)

  • TLS
  • Graceful shutdown for Workers when SIGINT is received.
    • Send Master a message that you're exiting, and close the connection.
    • Exit with 0 after all tasks are killed.
  • Master should notify if a Worker becomes unreachable...
    • ...without sending the message described above, "graceful shutdown".

#Development

  • There's a flake.nix which defines a development shell with the Rust toolchain and all the required dependencies ready to go.
    • Also configures pre-commit hooks.
  • There's a justfile which defines common commands. Requires just.
  • x86_64-unknown-linux-gnu builds use mold as the default linked, defined in .cargo/config.toml.
  • When using the trace feature, you need --cfg tokio_unstable, which is also set in .cargo/config.toml for x86_64-unknown-linux-gnu builds.
    • Otherwise, you can set RUSTFLAGS="--cfg tokio_unstable".

#License

This project is licensed under GNU General Public License v3.0 or later.