---
title: "ISH"
description: "A local API mock server. Run fake versions of Google, GitHub, Twilio, and more without touching production."
canonical_url: "https://2389.ai/products/ish/"
last_updated: "2026-03-17T10:45:41-05:00"
doc_version: "1.0"
date: 2025-12-30
product_type: "Tool"
tags: ["api", "mock", "google", "github", "twilio", "testing", "development", "go", "cli", "open-source", "developer-tools"]
---

# ISH

> A local API mock server. Run fake versions of Google, GitHub, Twilio, and more without touching production.


ISH runs on your machine and pretends to be seven different APIs. Point your Google, GitHub, Twilio, Discord, SendGrid, or Home Assistant SDK at `localhost:9000` instead of the real service, and your code can't tell the difference. No API quotas burned, no OAuth credentials to manage, no network required. One Go binary, one SQLite file, 50+ endpoints.

## Install

```bash
go build -o ish ./cmd/ish
```

Or download a pre-built binary from the [releases page](https://github.com/2389-research/ish/releases).

Then seed it with test data and start the server:

```bash
./ish seed
./ish serve --port 9000
```

## What it does

**Google APIs** — Gmail (messages, threads, labels, attachments, search syntax like `is:unread` and `in:inbox`), Calendar (events, time filtering, sync tokens), People (contacts, search, pagination), and Tasks (lists, CRUD, completion tracking).

**GitHub** — Repos, issues, pull requests, comments, reviews, and SSRF-protected webhooks via the REST v3 API.

**Twilio** — SMS and voice APIs with async webhook delivery, phone numbers, calls, and messages.

**Discord** — Webhook API v10: execute, edit, delete messages with embed and component support.

**SendGrid** — Email send API v3, API key management, and suppression lists.

**Home Assistant** — Entity states, service calls, and token auth.

**OAuth 2.0** — A mock OAuth provider that simulates authorization code flow, token refresh, and revocation for any plugin.

All of these work with their official SDKs. The only change is the base URL:

```bash
export GOOGLE_API_BASE_URL=http://localhost:9000
```

ISH also ships with an admin UI at `/admin` — a schema-driven web interface where you can browse all resources, manage test data, and inspect every request that hits the server.

If you set `OPENAI_API_KEY`, the `ish seed` command generates realistic emails, calendar events, contacts, and tasks using AI. Without it, you get sensible static data.

## How it works

Each API is a plugin. Plugins implement a standard interface — routes, schema, seed data — and register themselves at startup. The admin UI reads plugin schemas and generates its UI automatically, so adding a new mock API doesn't require touching core code.

Data lives in a single SQLite file (`~/.local/share/ish/ish.db` by default). Every request gets logged with plugin attribution, method, path, status, and timing. The auth layer accepts `Bearer user:USERNAME` tokens — no real credentials needed.

## Requirements

- Go 1.21+ (to build from source)
- Optional: `OPENAI_API_KEY` for AI-powered test data generation


## Sitemap

Parent: [Products](https://2389.ai/products/index.md)

Related pages in this section:

- [Skills Marketplace](https://2389.ai/products/skills-marketplace/index.md)
- [Mammoth](https://2389.ai/products/mammoth/index.md)
- [BotBoard](https://2389.ai/products/botboard/index.md)
- [Smasher](https://2389.ai/products/smasher/index.md)
- [Jeff](https://2389.ai/products/jeff/index.md)
- [Mux](https://2389.ai/products/mux/index.md)
- [Coven](https://2389.ai/products/coven/index.md)
- [Soloclaw](https://2389.ai/products/soloclaw/index.md)
- [ccvault](https://2389.ai/products/ccvault/index.md)
- [GSuite MCP](https://2389.ai/products/gsuite-mcp/index.md)


Site index: [llms.txt](https://2389.ai/llms.txt) · [sitemap.md](https://2389.ai/sitemap.md) · [HTML](https://2389.ai/products/ish/)
