# ABOUTME: OpenAI-compatible REST API server exposing embacle LLM runners
# ABOUTME: Proxies chat completions to CLI tools via standard HTTP endpoints
#
# SPDX-License-Identifier: Apache-2.0
# Copyright (c) 2026 dravr.ai

[package]
name = "embacle-server"
version = "0.19.4"
edition = "2021"
license = "Apache-2.0"
description = "Unified OpenAI-compatible REST API + MCP server for embacle LLM runners"
repository = "https://github.com/dravr-ai/dravr-embacle"
readme = "README.md"
keywords = ["openai", "llm", "mcp", "ai", "rest"]
categories = ["command-line-utilities", "web-programming::http-server"]

[features]
default = ["mcp-tools", "web-ui"]
# Server-side tool execution: connect to downstream MCP tool servers as a client
# and run an autonomous agent loop against them via /v1/chat/completions.
mcp-tools = ["dep:rmcp"]
# Expose the browser-driven `claude_web` provider over REST + MCP. Pulls in
# chromiumoxide (via embacle's web-ui feature). Requires a pre-authenticated
# browser profile on the server host (see docs/web-ui.md).
web-ui = ["embacle/web-ui"]

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

[[bin]]
name = "embacle-server"
path = "src/main.rs"

[dependencies]
embacle = { path = "../..", version = "0.19.4", features = ["config-file", "copilot-headless", "otel"] }
embacle-mcp = { path = "../embacle-mcp", version = "0.19.4" }
dravr-tronc = { version = "0.5.3", features = ["notifications"] }
rmcp = { version = "1.7", features = ["client", "transport-child-process"], optional = true }
async-trait = "0.1"
axum = "0.8"
clap = { version = "4", features = ["derive"] }
futures = "0.3"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
opentelemetry = "0.32"
opentelemetry_sdk = "0.32"
tokio = { version = "1.45", features = ["rt-multi-thread", "macros", "net", "io-util", "sync", "signal", "time"] }
tokio-stream = "0.1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
subtle = "2"

[dev-dependencies]
http-body-util = "0.1"
tokio = { version = "1.45", features = ["full", "test-util"] }
tower = { version = "0.5", features = ["util"] }
which = "7.0"

[lints]
workspace = true
