[package]
name = "mothership"
version = "0.0.3"
edition = "2024"
authors = ["Abdelkader Boudih <oss@seuros.com>"]
description = "Process supervisor with HTTP exposure - wrap, monitor, and expose your fleet"
readme = "README.md"
license = "MIT"
repository = "https://github.com/seuros/mothership"
homepage = "https://github.com/seuros/mothership"
documentation = "https://docs.rs/mothership"
keywords = ["process-manager", "supervisor", "http", "rama", "orchestration"]
categories = ["network-programming", "command-line-utilities", "asynchronous"]
default-run = "mothership"
exclude = [
    "gem/*",
    "deployments/*",
    "docker-compose*.yml",
    "Dockerfile*",
    ".env*",
    "scripts/*",
    "docs/*",
    "tests/*",
    "public/*",
    ".github/*",
]

[lib]
name = "mothership"
path = "src/lib.rs"

[dependencies]
# Core async runtime
tokio = { version = "1.47", features = ["full", "process", "signal"] }

# Rama - HTTP exposure layer
rama = { version = "0.3.0-alpha.3", features = ["http-full", "tcp"] }

# Serialization & Config
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.9"

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }

# CLI
clap = { version = "4.5", features = ["derive", "env"] }

# TUI
ratatui = "0.30.0-beta.0"
crossterm = "0.29"

# Process management
nix = { version = "0.30", features = ["signal", "process"] }
which = "7.0"

# WASM modules
wasmtime = { version = "37.0", features = ["async", "component-model", "cranelift"] }

# HTTP client for health checks
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }

# State machines + circuit breaker
state-machines = "0.7.0"
breaker-machines = "0.7.1"

# Utilities
anyhow = "1.0"
thiserror = "2.0"
regex = "1.11"
libc = "0.2"
dashmap = "6.1"

# Pin to avoid rcgen/x509-parser conflict
rcgen = "=0.14.5"


[dev-dependencies]
tempfile = "3.23"

[[bin]]
name = "mothership"
path = "src/main.rs"

[profile.release]
lto = true
codegen-units = 1
opt-level = 3
strip = true
