Skip to main content

SpnClient

Struct SpnClient 

Source
pub struct SpnClient { /* private fields */ }
Expand description

Client for communicating with the spn daemon.

The client uses Unix socket IPC to communicate with the daemon, which handles all keychain access to avoid repeated auth prompts.

On non-Unix platforms (Windows), the client always operates in fallback mode, reading secrets from environment variables.

Implementations§

Source§

impl SpnClient

Source

pub async fn connect() -> Result<Self, Error>

Connect to the spn daemon.

Returns an error if the daemon is not running.

This method is only available on Unix platforms.

Source

pub async fn connect_to(socket_path: &PathBuf) -> Result<Self, Error>

Connect to the daemon at a specific socket path.

This method is only available on Unix platforms.

Source

pub fn set_timeout(&mut self, timeout: Duration)

Set the timeout for IPC operations.

The default timeout is 30 seconds.

Source

pub fn timeout(&self) -> Duration

Get the current timeout for IPC operations.

Source

pub async fn connect_with_fallback() -> Result<Self, Error>

Connect to the daemon, falling back to env vars if daemon is unavailable.

This is the recommended way to connect in applications that should work even without the daemon running.

On non-Unix platforms (Windows), this always returns a fallback client.

Source

pub fn is_fallback_mode(&self) -> bool

Check if the client is in fallback mode (daemon not connected).

Source

pub async fn ping(&mut self) -> Result<String, Error>

Ping the daemon to verify the connection and check protocol compatibility.

Returns the daemon’s CLI version string on success. Warns if the protocol version doesn’t match but allows connection.

This method is only available on Unix platforms.

Source

pub async fn get_secret( &mut self, provider: &str, ) -> Result<SecretString, Error>

Get a secret for the given provider.

In fallback mode, attempts to read from the environment variable associated with the provider (e.g., ANTHROPIC_API_KEY).

Source

pub async fn has_secret(&mut self, provider: &str) -> Result<bool, Error>

Check if a secret exists for the given provider.

Source

pub async fn list_providers(&mut self) -> Result<Vec<String>, Error>

List all available providers.

Source

pub async fn refresh_secret(&mut self, provider: &str) -> Result<bool, Error>

Refresh a secret in the daemon cache.

This should be called after spn provider set to invalidate stale values. Returns true if the secret was found and reloaded.

Source

pub async fn watcher_status(&mut self) -> Result<WatcherStatusInfo, Error>

Get watcher status (recent projects, foreign MCPs, watched paths).

Returns status information about the MCP config watcher.

Source

pub async fn send_request( &mut self, request: Request, ) -> Result<Response, Error>

Send a request to the daemon and receive a response.

This is a low-level method for sending arbitrary requests. For common operations, use the convenience methods like get_secret().

The request will time out after the configured timeout (default 30 seconds).

Trait Implementations§

Source§

impl Debug for SpnClient

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more