pub struct AcpConfig {Show 17 fields
pub enabled: bool,
pub agent_name: String,
pub agent_version: String,
pub max_sessions: usize,
pub session_idle_timeout_secs: u64,
pub broadcast_capacity: usize,
pub permission_file: Option<PathBuf>,
pub available_models: Vec<String>,
pub transport: AcpTransport,
pub http_bind: String,
pub auth_token: Option<String>,
pub discovery_enabled: bool,
pub lsp: AcpLspConfig,
pub additional_directories: Vec<AdditionalDir>,
pub auth_methods: Vec<AcpAuthMethod>,
pub message_ids_enabled: bool,
pub subagents: AcpSubagentsConfig,
}Expand description
ACP (Agent Communication Protocol) server configuration, nested under [acp] in TOML.
When enabled = true, Zeph exposes an ACP endpoint that IDE integrations (e.g. Zed, VS Code)
can connect to for conversational coding assistance. Supports stdio and HTTP transports.
§Example (TOML)
[acp]
enabled = true
transport = "stdio"
agent_name = "zeph"
max_sessions = 4Fields§
§enabled: boolEnable the ACP server. Default: false.
agent_name: StringAgent name advertised in the ACP initialize response. Default: "zeph".
agent_version: StringAgent version advertised in the ACP initialize response. Default: crate version.
max_sessions: usizeMaximum number of concurrent ACP sessions. Default: 4.
session_idle_timeout_secs: u64Seconds of inactivity before an idle session is closed. Default: 1800.
broadcast_capacity: usizeBroadcast channel capacity for streaming events. Default: 256.
permission_file: Option<PathBuf>Path to the ACP permission TOML file controlling per-session tool access.
available_models: Vec<String>List of {provider}:{model} identifiers advertised to the IDE for model switching.
Example: ["claude:claude-sonnet-4-5", "ollama:llama3"]
transport: AcpTransportTransport mode: “stdio” (default), “http”, or “both”.
http_bind: StringBind address for the HTTP transport.
auth_token: Option<String>Bearer token for HTTP and WebSocket transport authentication.
When set, all /acp and /acp/ws requests must include Authorization: Bearer <token>.
Omit for local unauthenticated access. TLS termination is assumed to be handled by a
reverse proxy.
discovery_enabled: boolWhether to serve the /.well-known/acp.json agent discovery manifest. Only effective when transport is “http” or “both”. Default: true.
lsp: AcpLspConfigLSP extension configuration ([acp.lsp]).
additional_directories: Vec<AdditionalDir>Allowlist of workspace directories that ACP clients may reference in session requests.
Paths are canonicalized at config load; traversal (..) and reserved locations
(/proc, /sys, ~/.ssh, ~/.gnupg, ~/.aws) are rejected with an error.
An empty list means clients may not request any additional directories beyond the
session cwd.
This is a policy allowlist, not a protocol advertisement: the agent never returns
additional_directories in any response; instead it validates each session request’s
additional_directories field against this list and rejects with invalid_params
on any violation.
auth_methods: Vec<AcpAuthMethod>Auth methods advertised in the ACP initialize response.
PR 4 MVP accepts only "agent". Config load fails on any other value so drift
from the schema is detected at startup rather than silently ignored.
message_ids_enabled: boolEcho PromptRequest.message_id onto PromptResponse.user_message_id and every
streamed chunk, enabling IDE-side correlation.
Requires the unstable-message-id feature. Default: true.
subagents: AcpSubagentsConfigSub-agent delegation configuration ([acp.subagents]).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for AcpConfig
impl<'de> Deserialize<'de> for AcpConfig
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<AcpConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<AcpConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for AcpConfig
impl Serialize for AcpConfig
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for AcpConfig
impl RefUnwindSafe for AcpConfig
impl Send for AcpConfig
impl Sync for AcpConfig
impl Unpin for AcpConfig
impl UnsafeUnpin for AcpConfig
impl UnwindSafe for AcpConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request