Skip to main content

beam_core/
backend_kind.rs

1use serde::{Deserialize, Serialize};
2
3/// Terminal multiplexer / agent runtime backend for a Beam session.
4///
5/// Existing deployments default to [`BackendKind::Zellij`]; Herdr is an
6/// opt-in first-class backend selected per daemon or per bot. The value is
7/// persisted on `Session` at create/adopt time so a later config flip cannot
8/// silently move an existing session to the wrong mux.
9#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default)]
10#[serde(rename_all = "snake_case")]
11pub enum BackendKind {
12    #[default]
13    Zellij,
14    Herdr,
15}
16
17impl BackendKind {
18    pub fn as_str(self) -> &'static str {
19        match self {
20            BackendKind::Zellij => "zellij",
21            BackendKind::Herdr => "herdr",
22        }
23    }
24}