In-app agent · for enterprise apps

It does the next step, instead of explaining it.

An enterprise voice agent that lives inside your app. It sees the screen your customer is on and completes the step with them — opens the right page, points at the field, fills in what it already knows — within the boundaries your team sets.

  • React Native · Android · iOS · Flutter · Web
  • PII masked on the device
  • Deployed in your region
Sparsh PearlSparsh Pearl dealer appNew orderExample
₹0

Dealer

Dealer account✓

Quantity

Product

Pearl 5 kg✓

You took 40 cartons of Pearl 5 kg last month. Same again?

Speaking…

A dealer opens a new order and stops at the quantity.

Outcomes

Support that finishes the job.

Built for the flows that carry revenue and risk — onboarding, KYC, checkout, claims — where a customer who gets stuck is a customer who leaves.

  • Customers finish what they started.

    The agent completes the step with the customer instead of routing them to a help article. The form gets submitted, the order gets placed, the claim gets filed.

  • Drop-off is caught as it happens.

    The SDK notices a stalled form, repeated taps or an error on screen, and the agent offers help at that moment — before the customer gives up.

  • Every conversation is on the record.

    Transcripts, the screens the agent saw and every action it took, with its outcome — in Call History and through the API, for QA and compliance alike.

A real call

Two minutes, one real call.

The agent opens inside the app, hears what the customer wants, draws the options on screen and acts on the tap — no hand-off, no separate chat window, no reading a list out loud.

Recorded in a live app with the SDK installed — the components are the ones designed in the dashboard.

Abilities

What it may do is a list you write.

Each action you declare becomes a tool the agent can call while it can see the customer's screen. Your app implements a handler with the same name — declaring it creates the contract, not the behaviour.

  • Take them there

    It opens the screen instead of describing where to tap. It can only name screens your app declared; anything else is refused, with the list of what is valid.

  • Point at it

    A field or section is highlighted while the agent talks about it — exactly when “the button below the total” is what fails.

  • Fill it in

    From what it already knows — the last order, the document on file, the answer given a minute ago. The customer confirms instead of typing.

  • Notice the sticking point

    Your app reports which screen is open and what is on it. An agent that can see the form knows which field is empty without asking.

  • Anything you implement

    Declare an action with a name, a description and parameters, and it becomes a tool the agent can call. The description teaches it when.

  • And nothing else

    Declaring an action creates a contract, not a capability. The agent calls only handlers your app implements, on screens your app reports.

Security

Built for a security review.

An agent that can act inside your app is only as safe as its boundaries. Every one of them is yours to set — and to verify.

  • context.json

    Structured context, not screenshots

    Your app reports the screen and the fields it chooses. Nothing is recorded, captured or streamed from the display.

  • mask.ts

    Masked before it leaves the phone

    PAN, Aadhaar, card numbers, phone numbers and email addresses are masked on the device, and again on arrival. Add your own patterns.

  • actions.json

    An action contract, refused by default

    The agent can call only the handlers your app implements, on the screens your app reports. Every call returns a result your app decides.

  • audit.log

    A trail you can verify

    Every conversation, screen and action is logged, alongside an append-only, hash-chained audit trail you can verify yourself through the API.

  • keys.md

    Keys that cannot be misused

    The publishable key reads no data and places no call. Apps and domains are allowlisted, and voice sessions run on signed, short-lived grants.

  • deploy.md

    Deployed where your data must live

    Shared cloud, a dedicated instance in the region you choose, or your own compute with our control plane. Encrypted in transit, and at rest by our storage providers.

Install

Three steps, and it is in your app.

  1. 1

    Install the SDK

    React Native, Android, iOS or Flutter. Voice runs over WebRTC and the screen over its own channel, so a call survives the network your customer is walking through.

  2. 2

    Report what is on screen

    One hook per screen reports the page and its fields. Report less and it knows less — the right control for a screen you would rather it did not read.

  3. 3

    Declare what it may do

    Name an action in the dashboard and write a handler with the same name. We roll it out with your team, screen by screen.

Checkout.tsx
import {
  useGraineScreen,
  useGraineAction,
} from "@graineai/inapp-react-native";

function Checkout() {
  // What the agent can see: this screen, and these fields
  useGraineScreen({
    screen: "checkout",
    fields: [{ name: "cartons", label: "Cartons", value: cartons,
               status: cartons ? "filled" : "empty" }],
  });

  // What it may do here — and the result it gets back
  useGraineAction("set_quantity", async ({ cartons }) => {
    setCartons(cartons);
    return { status: "ok", message: `Set to ${cartons} cartons.` };
  });
}
App.tsx — once, at the root
<GraineProvider publishableKey="pk_live_…"
                loadFont={Font.loadAsync} svg={{ Svg, Path }}>
  <App />
  <GraineVoiceLauncher webView={WebView}>
    {(api) => <GraineVoiceBar api={api} />}
  </GraineVoiceLauncher>
</GraineProvider>

The bar is the SDK's — drawn in your design, with your typeface. Android, iOS and Flutter need even less: the bar you mount draws itself.

The Garage

It looks like your product, on every phone.

Choose one of 23 designs in the dashboard, or tune one to your brand — colour, corners, typeface, launcher, motion. Every SDK draws it and loads the typeface itself, and a change reaches every phone on its next session, with no app release.

  • assistantlistening

    Graine Classic

    graine · system font

  • assistantlistening

    Signature

    graine · dm sans

  • assistantlistening

    Chat Neutral

    native · system font

  • assistantlistening

    Material You

    native · roboto

  • assistantlistening

    iOS Native

    native · system font

  • assistantlistening

    Minimal Mono

    modern · geist

  • assistantlistening

    Fluent

    enterprise · system font

  • assistantlistening

    Enterprise Grid

    enterprise · ibm plex sans

  • assistantlistening

    Fintech Clear

    enterprise · ibm plex sans devanagari

  • assistantlistening

    Liquid Glass

    modern · system font

  • assistantlistening

    Soft & Playful

    modern · nunito

  • New
    assistantlistening

    Desktop Buddy

    modern · inter

  • assistantlistening

    Swiss Grid

    modern · inter

  • assistantlistening

    Precision

    modern · inter

  • assistantlistening

    Japandi Calm

    modern · noto sans

  • assistantlistening

    Neo-Brutalist

    expressive · dm sans

  • assistantlistening

    Editorial

    expressive · source serif 4

  • assistantlistening

    Black & Gold

    expressive · poppins

  • assistantlistening

    Retro Terminal

    expressive · jetbrains mono

  • assistantlistening

    Warm & Earthy

    expressive · mukta

  • assistantlistening

    Bauhaus

    expressive · dm sans

  • assistantlistening

    Gamified

    expressive · nunito

  • assistantlistening

    High Contrast

    enterprise · atkinson hyperlegible next

New: Desktop Buddy. Clean white windows, a blue pointer and a bit of bounce, available for your agent.

Components — and what it draws, in each phone's own grammar

9:41●●●

Three that fit your budget

Tap one and I'll tell you more.

  • Creta SX(O) Turbo

    ₹19.2 lakh

    Best value

    6 airbagsPanoramic sunroof18.0 kmpl
  • Seltos GTX+

    ₹20.4 lakh
    Ventilated seats360° camera
  • Grand Vitara Alpha

    ₹19.9 lakh
    Strong hybrid27.9 kmpl

Still listening

Tap one, or just say it.

Gallery · iPhone

Big photos, one per row. Apple's corners and tags.

9:41●●●

Three that fit your budget

Tap one and I'll tell you more.

  • Creta SX(O) Turbo

    Best value

    6 airbagsPanoramic sunroof18.0 kmpl
    ₹19.2 lakh
  • Seltos GTX+

    Ventilated seats360° camera
    ₹20.4 lakh
  • Grand Vitara Alpha

    Strong hybrid27.9 kmpl
    ₹19.9 lakh

Still listening

Tap one, or just say it.

Cards · Android

Thumbnail rows. Material's pills and outlined chips.

9:41●●●

Three that fit your budget

Tap one and I'll tell you more.

Still listening

Tap one, or just say it.

List · Samsung

Dense rows; the row is the button. One UI's rounding.

9:41●●●
Loading…

Still listening

Tap one, or just say it.

Loading · dark

A component on its way shows its shape, with the loader you chose.

Why it sits inside the app

Every enterprise has access to the same models. What decides the outcome is where the agent sits.

A chat window in the corner can describe the button. It cannot press it, point at it, or notice that the customer has been stuck on the same field for a minute.

So the agent lives inside the app — with the screen in front of it and a short list of things it is allowed to do. It opens the page instead of giving directions, fills in what it already knows, and asks your app for help, not your customer.

— The Graine team

Questions

Questions from your review.

Does it record the customer's screen?

No. Your app reports the screen's name and the fields you choose, as structured data, masked on the device before it leaves. There are no screenshots and no screen recording.

What can it do inside our app?

Only the actions you declare and implement, on the screens your app reports. Anything else is refused, and every action returns a result your app decides.

Where does our data live?

In our shared cloud, in a dedicated instance in the region you choose, or on your own compute with our control plane. Data is encrypted in transit and at rest by our providers, and you can turn on transcript redaction for each agent.

Can our security team review it?

Yes. We will complete your security questionnaire, provide architecture detail, and arrange a technical review with the engineers who built the controls. The audit trail can be verified independently.

Which platforms and languages?

React Native, Android, iOS and Flutter, plus your website. It speaks the languages your Graine agents speak, including ten Indian languages.

Do changes need an app release?

Not for how it looks, what it says or the components it shows — those come from the dashboard, on every phone's next session. A new action needs a handler in your code.

How is it priced and rolled out?

The in-app agent is part of our enterprise plans, scoped to your volumes and deployment. We roll it out with your team, screen by screen — your actions, your design, your security requirements.

In-app agent · Enterprise

See it working in your app.

We'll scope it with your team — your screens, your actions, your deployment and your security requirements — and show it on your own flows.