Open-source in-app support SDK

Resolve support issues inside your app.

An in-app AI agent that finds, explains, and fixes product issues, with user approvals and full operator control.

iOS · 17.4 · SDK v1.4.2
Live command traceResolveKit Sample · sess_8f3c…42a1
In progress
Ask about an in-app issue…
Send

Platforms

Native iOS & Android

Hosting

Managed or self-hosted

Models

Your own LLM keys

Source

Backend & SDKs on GitHub
01Resolve

Meet users where the issue is already happening.

01.1

Deflect known issues earlier

ResolveKit meets users inside the workflow that is already failing, so repeatable blockers can be handled before they turn into ticket queues.

01.2

Make support knowledge executable

Ground the agent in docs, flows, and screenshots, then connect approved product actions so guidance can turn into actual resolution.

01.3

Keep teams aligned on risk

Product, CX, and engineering share one policy layer for approvals, version limits, and trace history instead of improvising across tools.

02Control

Automation that asks before it acts.

Automate the safe path, require consent on the sensitive path, and keep an auditable record of both.

  1. policy

    Define policy

    Choose which actions can auto-run, which must wait for consent, and which should stay unavailable by default.

  2. explain

    Explain action

    The agent states what it wants to do, why it matters, and what the user should expect next.

  3. approve

    Collect approval

    Sensitive steps stop inside chat until the user explicitly approves the action.

  4. record

    Record outcome

    Execution results, payloads, and final status are written to the session trace for review.

03Operate

Built for the people who answer for it.

outcomes

Lower ticket volume without hiding the work

Teams can see which issues were resolved in-product, which actions were taken, and where escalation is still required.

operations

Tune behavior without another release cycle

Update prompts, functions, limits, and environment-specific rules from one dashboard instead of waiting on app updates.

guardrails

Policies can block the wrong action before it runs

Function eligibility can be scoped by platform, app version, session fields, and explicit approval requirements.

awareness

The agent understands what the user is actually seeing

Ingest guide images and screenshots alongside docs so the assistant can reason about UI layout, steps, and breakpoints with less guesswork.

04Integrate

Three steps from install to a live agent.

Based on the real resolvekit-ios-sdk APIs and runtime lifecycle.

Define tool functions with @ResolveKitFunction Source
import ResolveKitCore

@ResolveKit(name: "set_lights", description: "Turn lights on or off in a room", timeout: 30)
struct SetLights: ResolveKitFunction {
    func perform(room: String, on: Bool) async throws -> Bool {
        // your implementation
        return on
    }
}

@ResolveKit(name: "get_weather", description: "Get current weather for a city", timeout: 10)
struct GetWeather: ResolveKitFunction {
    func perform(city: String) async throws -> String {
        "\(city): sunny, 22°C"
    }
}

Runtime resolves inline functions + function packs.

Function names must stay unique across all sources.

Use stable snake_case names: the backend stores tools by function name.

Each function must be async throws and implemented on a struct.

Start in one flow. Expand from there.

Pick the in-app moment where users get stuck most often, ship there first, and expand after the team trusts the flow.