---
title: "Tarka — Build and deploy AI agents with ease"
description: "Provision the components your agents need, from inference and hosting to sandboxes and storage, from the CLI or your coding agent over MCP, on one account with one bill."
url: "https://tarkahq.com/"
---

# Build and deploy AI agents with ease.

Provision the components your agents need, from inference and hosting to sandboxes and storage, from the CLI or your coding agent over MCP, and add AI and agentic components to the apps you build.

[Create an account](https://tarkahq.com/console?auth=signup) [Read the docs](https://tarkahq.com/docs/)

```bash
curl -fsSL \
  https://tarkahq.com/install.sh | sh
tarka login
```

```bash
claude mcp add --transport http \
  --scope user tarka \
  https://tarka.rest/mcp
```

```bash
codex mcp add tarka \
  --url https://tarka.rest/mcp
codex mcp login tarka
```

Sign in when your browser opens, then give your coding agent a task:

Build a support agent that answers questions from our docs, and host it on Tarka.

[Connect Claude or another MCP client](https://tarkahq.com/docs/control-api/mcp/)

## Core components to compose and deploy any type of AI application.

One account, one usage record and one bill across models, agents, sandboxes and data. Your coding agent provisions them over MCP; you can do the same from the CLI.

- [Inference **Model Inference** Call chat and reasoning models through one OpenAI-compatible API.](https://tarkahq.com/inference/)
- [Compute **Hosted Agents** Keep agents online with managed memory, tools, private state, and network access.](https://tarkahq.com/compute/#hosted-agents)
- [Agents **Agent Services** Memory, connectors and tools, search and browsing, and end-user identity, provisioned per agent.](https://tarkahq.com/how-it-works/#surfaces)
- [Inference **Utility APIs** Turn audio into text, read documents, generate speech, and create consent-backed voices.](https://tarkahq.com/inference/#speech-and-documents)
- [Compute **Code Sandboxes** Run the code your agents write in isolation, from immutable dependency templates.](https://tarkahq.com/compute/#sandboxes)
- [Data **Storage and Databases** Private S3-compatible buckets, hosted Git, and managed Postgres next to the agents that use them.](https://tarkahq.com/data/)

## Build any kind of agent from the same blocks.

Each card lists what an agent uses, where it runs and who bills each part. Switch a card to compose.yaml to see the stack it runs on its host.

Who bills each part

- Tarka
- Passed through on your Tarka bill
- Your own account
- How it’s metered

Showing agents 1 and 2 of 4

### Personal assistant

Reads your mail and calendar, searches the web, answers you on Telegram by text or voice and remembers what you tell it.

**Isolated** · one copy per person

- **models**: - deepseek-v4.1-flash-eu , tokens , billed by Tarka
  - qwen3-asr , audio seconds , billed by Tarka
  - kokoro , audio seconds , billed by Tarka
- **tools**: - web search , billed by Tarka
- **connectors**: - Gmail , your own account
  - Google Calendar , your own account
- **memory**: - long-term · per person , billed by Tarka
- **runs on**: - agent host , 1 vCPU · 2 GiB , billed by Tarka
  - US East , billed by Tarka
- **channels**: - Telegram , your own account
  - web app , billed by Tarka

```
# one copy per person, on its own host
x-tarka:
  routes:
    - {service: web, port: 3000, path: /}
services:
  agent:
    image: ghcr.io/acme/assistant:1.4
    environment:
      OPENAI_BASE_URL: http://tarka/v1  # no API key
      MODEL: deepseek-v4.1-flash-eu
      VOICE: qwen3-asr, kokoro
      TOOLS: web_search, gmail, google_calendar
      TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
    volumes: [memory:/data]  # per person
  web:
    image: ghcr.io/acme/assistant-web:1.4
    expose: ["3000"]
volumes:
  memory:
```

### Order fulfillment

[see it wired](https://tarkahq.com/how-it-works/#one-agent)

Matches supplier invoices to orders, books shipments with your carriers, sends pick lists to the warehouse and reconciles stock every night.

**Shared** · one background agent for the whole store

- **models**: - deepseek-v4.1-flash-eu , tokens , billed by Tarka
  - glm-ocr , successful pages , billed by Tarka
- **tools**: - code sandbox , 1 vCPU · 1 GiB , billed by Tarka
  - object storage , billed by Tarka
  - address validation , passed through on your Tarka bill
  - print\_pick\_list , a client tool your warehouse app runs , your own account
- **connectors**: - store API · MCP , your own account
  - warehouse API · MCP , your own account
  - UPS , your own account
  - DHL , your own account
- **memory**: - past orders · shared , billed by Tarka
- **runs on**: - agent host , 2 vCPU · 4 GiB , billed by Tarka

  - batch job , 1 vCPU · 2 GiB , billed by Tarka
  - US East , billed by Tarka
- **triggers**: - order.created , billed by Tarka
  - nightly · 02:00 , billed by Tarka

```
# one agent for the whole store
x-tarka:
  routes:  # order.created
    - {service: agent, port: 8080, path: /hooks}
services:
  agent:
    image: ghcr.io/acme/fulfillment:2.1
    environment:
      OPENAI_BASE_URL: http://tarka/v1  # no API key
      MCP_SERVERS: >-
        https://shop.example.com/mcp
        https://wms.example.com/mcp
      CARRIERS: ups, dhl
      S3_BUCKET: invoices
      DATABASE_URL: postgres://agent:${DB_PASSWORD}@db/orders
    expose: ["8080"]
  db:
    image: postgres:16-alpine
    environment: {POSTGRES_PASSWORD: "${DB_PASSWORD}"}
    volumes: [orders:/var/lib/postgresql/data]
volumes:
  orders:
```

### Customer support

Answers tickets, email and phone calls, looks up orders and refunds, and hands the hard cases to your team in Zendesk.

**Shared** · by all your customers, scoped to each one

- **models**: - deepseek-v4.1-flash-eu , tokens , billed by Tarka
  - qwen3-asr , audio seconds , billed by Tarka
  - kokoro , audio seconds , billed by Tarka
- **tools**: - help center · hosted git , billed by Tarka
  - refund\_order , a client tool your store runs , your own account
- **connectors**: - Zendesk , your own account
  - Gmail , your own account
  - store API · MCP , your own account
- **memory**: - past tickets · per customer , billed by Tarka
- **runs on**: - agent host , 2 vCPU · 4 GiB , billed by Tarka
  - US East , billed by Tarka
- **channels**: - phone line , passed through on your Tarka bill
  - web chat , billed by Tarka

```
# one agent, every customer scoped
x-tarka:
  routes:
    - {service: chat, port: 3000, path: /}  # web chat
    - {service: agent, port: 8080, path: /api}
services:
  agent:
    image: ghcr.io/acme/support-agent:3.0
    environment:
      OPENAI_BASE_URL: http://tarka/v1  # no API key
      MODEL: deepseek-v4.1-flash-eu
      HELP_CENTER: git.tarka.rest/acme/help-center
      ZENDESK_TOKEN: ${ZENDESK_TOKEN}
      MEMORY_SCOPE: customer
    expose: ["8080"]
  chat:
    image: ghcr.io/acme/support-chat:3.0
    expose: ["3000"]
```

### Fitness coach

Reads each athlete’s Strava and Garmin workouts, analyzes them in a code sandbox, plans the week and checks in on WhatsApp.

**Isolated** · one copy per athlete

- **models**: - glm-5.3-flash-eu , tokens , billed by Tarka
- **tools**: - code sandbox , 1 vCPU · 1 GiB , billed by Tarka
  - weather forecast , passed through on your Tarka bill
- **connectors**: - Strava , your own account
  - Garmin , your own account
- **memory**: - training history · per athlete , billed by Tarka
- **runs on**: - agent host , 1 vCPU · 1 GiB , billed by Tarka
  - US East , billed by Tarka
- **channels**: - WhatsApp , your own account
  - Telegram , your own account
  - weekly plan · Sun 18:00 , billed by Tarka

```
# one copy per athlete, on its own host
x-tarka:
  volume_sizes: {history: 2Gi}
services:
  coach:
    image: ghcr.io/acme/coach:0.9
    environment:
      OPENAI_BASE_URL: http://tarka/v1  # no API key
      MODEL: glm-5.3-flash-eu
      SANDBOX_TEMPLATE: python-3.12  # analysis
      STRAVA_TOKEN: ${STRAVA_TOKEN}
      GARMIN_TOKEN: ${GARMIN_TOKEN}
      WEEKLY_PLAN: "0 18 * * SUN"
    volumes: [history:/data]  # per athlete
volumes:
  history:
```

## The same prompt, with and without Tarka.

A shopping assistant built twice by the same coding agent: once from a raw prompt, once on Tarka’s blocks.

Progress to a running agent, over time (Illustrative)

Illustrative: progress to a running agent over working time. From a raw prompt the build stops 12 times for a person, 7 times to open a new account, and reaches a running agent after about 6 hours. With Tarka it stops 3 times, once to open a new account, and reaches a running agent after about 45 minutes, then stays running.

A person stops the build to open an account, paste a key or fix a console. The line stays flat until they’re done.

Illustrative: the same agent built from a raw prompt and on Tarka

| Measure | Raw prompt | With Tarka |
| --- | --- | --- |
| Time to a running agent | \~6h | \~45min |
| Manual interventions: Accounts, keys, consoles | 12, 7 new accounts | 3, 1 account |
| Tokens burned: By the coding agent | \~8M | \~1.5M |
| Cost to build: Tokens at \~$3 a million | \~$25 | \~$5 |

The raw path keeps stopping for a person to open an account or paste a key. Illustrative, not a measurement yet: it will be replaced by a recorded side-by-side run, with both transcripts published.

## See how it fits together, and what it costs.

How your coding agent wires an agent from Tarka’s blocks, and what agents like these cost on Tarka or on your own infrastructure.

- [How it works **From your coding agent to a running agent.** The steps from your coding agent to a running agent, how your product calls the agent Tarka hosts, and how the blocks fit together for one agent and for a whole application.](https://tarkahq.com/how-it-works/)
- [Pricing **Price an agent like these.** Start from one of the agents above, move the sliders to your volume, and compare running it on Tarka with running it yourself.](https://tarkahq.com/pricing/)

## Create an account and deploy your first agent.

Sign up, then request the products you need from the console.

[Create an account](https://tarkahq.com/console?auth=signup) [Read the docs](https://tarkahq.com/docs/)
