# shark-empire/mitos-session architecture

> Architecture diagram of the GitHub repository shark-empire/mitos-session, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/shark-empire/mitos-session
- Repository: https://github.com/shark-empire/mitos-session

## Overview

mitos-session is MITOS’s root session and policy daemon: clients request session and security operations over authenticated Unix-socket IPC, and the daemon applies policy, updates session/seat state, and dispatches UI events or system actions. The graph reflects the documented calloop-owned state model and sampled IPC, session, seat, and power code; several feature connections are based on README documentation rather than inspected implementation excerpts.

Main entry points: [`src/main.rs`](https://github.com/shark-empire/mitos-session/blob/main/src/main.rs) (Daemon event loop), [`src/ipc/server.rs`](https://github.com/shark-empire/mitos-session/blob/main/src/ipc/server.rs) (IPC server), [`src/session/lifecycle.rs`](https://github.com/shark-empire/mitos-session/blob/main/src/session/lifecycle.rs) (Session lifecycle), [`src/power/mod.rs`](https://github.com/shark-empire/mitos-session/blob/main/src/power/mod.rs) (Power transitions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_transport["IPC and orchestration"]
  node_daemon["Daemon event loop<br/>[main.rs]"]
  node_ipc["IPC server<br/>[server.rs]"]
  node_protocol["IPC protocol<br/>[protocol.rs]"]
end

subgraph group_sessions["Sessions and seats"]
  node_sessions["Session registry<br/>[manager.rs]"]
  node_lifecycle["Session lifecycle<br/>[lifecycle.rs]"]
  node_environment["Session environment<br/>[environment.rs]"]
  node_users["Account and privileges<br/>[mod.rs]"]
  node_seats["Seat registry<br/>[manager.rs]"]
  node_devices["Seat devices<br/>[device.rs]"]
end

subgraph group_security["Security policy"]
  node_lock["Lock manager<br/>[mod.rs]"]
  node_idle["Idle tracking<br/>[mod.rs]"]
  node_authentication["Authentication<br/>[mod.rs]"]
  node_elevation["Elevation manager<br/>[manager.rs]"]
  node_policy["Security policies<br/>[mod.rs]"]
end

subgraph group_system["System actions"]
  node_launcher["Process launcher<br/>[application.rs]"]
  node_power["Power transitions<br/>[mod.rs]"]
  node_signals["Signal handling<br/>[handlers.rs]"]
end

subgraph group_support["Configuration and audit"]
  node_config["Settings loader<br/>[loader.rs]"]
  node_audit["Audit logging<br/>[audit.rs]"]
end

node_gui(("Desktop GUI"))
node_login(("Login greeter"))
node_service(("Policy service"))
node_pam{{"Linux PAM"}}
node_kernel{{"Linux facilities"}}
node_services{{"Service manager"}}

node_gui -->|"sends requests"| node_ipc
node_login -->|"queries accounts"| node_ipc
node_service -->|"requests verification"| node_ipc
node_ipc -->|"frames messages"| node_protocol
node_ipc -->|"dispatches commands"| node_daemon
node_daemon -->|"sends replies"| node_ipc
node_daemon -->|"loads settings"| node_config
node_daemon -->|"manages sessions"| node_sessions
node_sessions -->|"starts and ends"| node_lifecycle
node_lifecycle -->|"resolves account"| node_users
node_lifecycle -->|"prepares environment"| node_environment
node_daemon -->|"manages seat state"| node_seats
node_seats -->|"tracks devices"| node_devices
node_daemon -->|"records activity"| node_idle
node_daemon -->|"locks sessions"| node_lock
node_daemon -->|"checks credentials"| node_authentication
node_authentication -->|"verifies credentials"| node_pam
node_daemon -->|"handles elevation"| node_elevation
node_elevation -->|"checks credentials"| node_authentication
node_daemon -->|"applies authorization"| node_policy
node_daemon -->|"sends state events"| node_gui
node_daemon -->|"launches processes"| node_launcher
node_daemon -->|"requests transitions"| node_power
node_power -->|"performs transition"| node_kernel
node_power -.->|"requests supervised transition"| node_services
node_daemon -->|"handles signals"| node_signals
node_daemon -->|"records security events"| node_audit
node_daemon -->|"requests lock UI"| node_gui

click node_daemon "https://github.com/shark-empire/mitos-session/blob/main/src/main.rs"
click node_ipc "https://github.com/shark-empire/mitos-session/blob/main/src/ipc/server.rs"
click node_protocol "https://github.com/shark-empire/mitos-session/blob/main/src/ipc/protocol.rs"
click node_sessions "https://github.com/shark-empire/mitos-session/blob/main/src/session/manager.rs"
click node_lifecycle "https://github.com/shark-empire/mitos-session/blob/main/src/session/lifecycle.rs"
click node_environment "https://github.com/shark-empire/mitos-session/blob/main/src/session/environment.rs"
click node_users "https://github.com/shark-empire/mitos-session/blob/main/src/user/mod.rs"
click node_seats "https://github.com/shark-empire/mitos-session/blob/main/src/seat/manager.rs"
click node_devices "https://github.com/shark-empire/mitos-session/blob/main/src/seat/device.rs"
click node_lock "https://github.com/shark-empire/mitos-session/blob/main/src/lock/mod.rs"
click node_idle "https://github.com/shark-empire/mitos-session/blob/main/src/idle/mod.rs"
click node_authentication "https://github.com/shark-empire/mitos-session/blob/main/src/authentication/mod.rs"
click node_elevation "https://github.com/shark-empire/mitos-session/blob/main/src/elevation/manager.rs"
click node_policy "https://github.com/shark-empire/mitos-session/blob/main/src/policy/mod.rs"
click node_launcher "https://github.com/shark-empire/mitos-session/blob/main/src/launcher/application.rs"
click node_power "https://github.com/shark-empire/mitos-session/blob/main/src/power/mod.rs"
click node_signals "https://github.com/shark-empire/mitos-session/blob/main/src/signals/handlers.rs"
click node_config "https://github.com/shark-empire/mitos-session/blob/main/src/config/loader.rs"
click node_audit "https://github.com/shark-empire/mitos-session/blob/main/src/logging/audit.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_daemon,node_ipc,node_protocol,node_gui toneBlue
class node_sessions,node_lifecycle,node_environment,node_users,node_seats,node_devices toneAmber
class node_lock,node_idle,node_authentication,node_elevation,node_policy toneMint
class node_launcher,node_power,node_signals toneRose
class node_config,node_audit,node_login,node_service,node_pam,node_kernel,node_services toneIndigo
```

## Components

### IPC and orchestration

- [Daemon event loop](https://github.com/shark-empire/mitos-session/blob/main/src/main.rs): `src/main.rs`
- [IPC server](https://github.com/shark-empire/mitos-session/blob/main/src/ipc/server.rs): `src/ipc/server.rs`
- [IPC protocol](https://github.com/shark-empire/mitos-session/blob/main/src/ipc/protocol.rs): `src/ipc/protocol.rs`

### Sessions and seats

- [Session registry](https://github.com/shark-empire/mitos-session/blob/main/src/session/manager.rs): `src/session/manager.rs`
- [Session lifecycle](https://github.com/shark-empire/mitos-session/blob/main/src/session/lifecycle.rs): `src/session/lifecycle.rs`
- [Session environment](https://github.com/shark-empire/mitos-session/blob/main/src/session/environment.rs): `src/session/environment.rs`
- [Account and privileges](https://github.com/shark-empire/mitos-session/blob/main/src/user/mod.rs): `src/user/mod.rs`
- [Seat registry](https://github.com/shark-empire/mitos-session/blob/main/src/seat/manager.rs): `src/seat/manager.rs`
- [Seat devices](https://github.com/shark-empire/mitos-session/blob/main/src/seat/device.rs): `src/seat/device.rs`

### Security policy

- [Lock manager](https://github.com/shark-empire/mitos-session/blob/main/src/lock/mod.rs): `src/lock/mod.rs`
- [Idle tracking](https://github.com/shark-empire/mitos-session/blob/main/src/idle/mod.rs): `src/idle/mod.rs`
- [Authentication](https://github.com/shark-empire/mitos-session/blob/main/src/authentication/mod.rs): `src/authentication/mod.rs`
- [Elevation manager](https://github.com/shark-empire/mitos-session/blob/main/src/elevation/manager.rs): `src/elevation/manager.rs`
- [Security policies](https://github.com/shark-empire/mitos-session/blob/main/src/policy/mod.rs): `src/policy/mod.rs`

### System actions

- [Process launcher](https://github.com/shark-empire/mitos-session/blob/main/src/launcher/application.rs): `src/launcher/application.rs`
- [Power transitions](https://github.com/shark-empire/mitos-session/blob/main/src/power/mod.rs): `src/power/mod.rs`
- [Signal handling](https://github.com/shark-empire/mitos-session/blob/main/src/signals/handlers.rs): `src/signals/handlers.rs`

### Configuration and audit

- [Settings loader](https://github.com/shark-empire/mitos-session/blob/main/src/config/loader.rs): `src/config/loader.rs`
- [Audit logging](https://github.com/shark-empire/mitos-session/blob/main/src/logging/audit.rs): `src/logging/audit.rs`

### Other components

- **Desktop GUI**
- **Login greeter**
- **Policy service**
- **Linux PAM**
- **Linux facilities**
- **Service manager**

## Connections

- Desktop GUI → IPC server: sends requests
- Login greeter → IPC server: queries accounts
- Policy service → IPC server: requests verification
- IPC server → IPC protocol: frames messages
- IPC server → Daemon event loop: dispatches commands
- Daemon event loop → IPC server: sends replies
- Daemon event loop → Settings loader: loads settings
- Daemon event loop → Session registry: manages sessions
- Session registry → Session lifecycle: starts and ends
- Session lifecycle → Account and privileges: resolves account
- Session lifecycle → Session environment: prepares environment
- Daemon event loop → Seat registry: manages seat state
- Seat registry → Seat devices: tracks devices
- Daemon event loop → Idle tracking: records activity
- Daemon event loop → Lock manager: locks sessions
- Daemon event loop → Authentication: checks credentials
- Authentication → Linux PAM: verifies credentials
- Daemon event loop → Elevation manager: handles elevation
- Elevation manager → Authentication: checks credentials
- Daemon event loop → Security policies: applies authorization
- Daemon event loop → Desktop GUI: sends state events
- Daemon event loop → Process launcher: launches processes
- Daemon event loop → Power transitions: requests transitions
- Power transitions → Linux facilities: performs transition
- Power transitions → Service manager: requests supervised transition
- Daemon event loop → Signal handling: handles signals
- Daemon event loop → Audit logging: records security events
- Daemon event loop → Desktop GUI: requests lock UI
