-
Notifications
You must be signed in to change notification settings - Fork 1
Closed
Labels
a2aA2A protocol integrationA2A protocol integrationfeatureNew functionalityNew functionalitypriority/highHigh priorityHigh prioritysize/M
Description
Parent
Part of #581. Depends on LoopbackChannel and streaming TaskProcessor issues.
Summary
Add --daemon CLI flag that starts Zeph in headless mode: full agent bootstrap, A2A server exposed, components managed by DaemonSupervisor, PID file lifecycle.
Scope
Files: src/main.rs, crates/zeph-core/src/daemon.rs
CLI flag
#[cfg(all(feature = "daemon", feature = "a2a"))]
#[arg(long)]
daemon: bool,run_daemon() function
- Full AppBuilder setup (provider, memory, skills, tools, MCP)
- Create
LoopbackChannel::pair() - Spawn
Agent<LoopbackChannel, T>viaagent.run()in dedicated tokio task - Build
AgentTaskProcessorwithLoopbackHandle - Spawn A2A server
- Register both tasks as
ComponentHandleunderDaemonSupervisor write_pid_file()on startsupervisor.run()— health monitoring loop- On shutdown signal:
remove_pid_file(), graceful cleanup
Init wizard
Update --init wizard to include daemon mode questions.
Acceptance Criteria
-
cargo run --features daemon,a2a -- --daemonstarts headless agent - PID file created at configured path, removed on shutdown
- A2A endpoint responds at
GET /.well-known/agent-card.json -
curl POST /a2areturns full agent response (not bare LLM) - Ctrl-C triggers graceful shutdown
- DaemonSupervisor logs component failures
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
a2aA2A protocol integrationA2A protocol integrationfeatureNew functionalityNew functionalitypriority/highHigh priorityHigh prioritysize/M