tinyhumansai/openhuman · error

tiny.place signer unavailable; unlock your wallet

Error message

tiny.place signer unavailable; unlock your wallet

What it means

Sentinel error from the tiny.place agent_id helper: resolving the caller's agent id from the wallet signer failed because the wallet is locked or has no signer configured. Identity is deliberately taken only from the signer (anti-spoof), so no argument can substitute for it.

Source

Thrown at src/openhuman/tinyplace/agent_tools/common.rs:222

/// Process-global tiny.place client, built lazily from the wallet signer.
pub async fn client() -> anyhow::Result<&'static tinyplace::TinyPlaceClient> {
    super::super::ops::global_state()
        .client()
        .await
        .map_err(|e| anyhow::anyhow!("tiny.place client unavailable: {e}"))
}

/// The caller's own agent id, resolved from the wallet signer.
///
/// Identity is **always** taken from the signer, never from tool arguments —
/// the agent cannot act as anyone but itself (anti-spoof).
pub fn agent_id(client: &tinyplace::TinyPlaceClient) -> anyhow::Result<String> {
    client
        .http()
        .signer()
        .map(|s| s.agent_id())
        .ok_or_else(|| anyhow::anyhow!("tiny.place signer unavailable; unlock your wallet"))
}

/// The caller's own base64 public (encryption) key, from the wallet signer.
pub fn public_key(client: &tinyplace::TinyPlaceClient) -> anyhow::Result<String> {
    client
        .http()
        .signer()
        .map(|s| s.public_key_base64())
        .ok_or_else(|| anyhow::anyhow!("tiny.place signer unavailable; unlock your wallet"))
}

/// Resolve a `@handle` (or bare handle) to its wallet cryptoId, falling back to
/// the input unchanged when it is already an id or can't be resolved. Used by
/// the follow/unfollow flows so the agent can pass a friendly handle.
pub async fn resolve_agent(client: &tinyplace::TinyPlaceClient, target: &str) -> String {
    let name = target.trim().trim_start_matches('@');
    if name.is_empty() {
        return target.trim().to_string();

View on GitHub (pinned to 7491200858)

Solutions

  1. Unlock the wallet in the app
  2. Configure/import a wallet signer, then retry the tool call
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/tinyplace/agent_tools/common.rs:222 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/cbce8fbc08122c51. Report an issue: GitHub.