Tangison Agent
GitHubWhatsApp
Documentation

How to install, run,
and ship this site.

The marketing site is open source under MIT. The self-hosted agent runtime is in development. This page documents what exists today and what is planned, with no embellishment.

01

Install the marketing site

The marketing site is a Next.js 16 application. It needs Node 20+ or Bun, and an OpenRouter API key for the AI concierge widget. The site itself has no database, so install is two commands plus one environment variable.

Requires: Node 20+ or Bun 1.1+, an OpenRouter API key.

# 1. Clone the repository
git clone https://github.com/tangison/agent.git
cd agent

# 2. Install dependencies
bun install

# 3. Copy the env template and add your OpenRouter key
cp .env.example .env
# Edit .env: set OPENROUTER_API_KEY to your sk-or-v1-... key

# 4. Run the dev server
bun run dev

# 5. Open http://localhost:3000
VariableRequiredPurpose
OPENROUTER_API_KEYYesPowers the AI concierge widget at the bottom of every page.
OPENROUTER_MODELNoModel ID. Defaults to openrouter/auto.
NEXT_PUBLIC_SITE_URLNoCanonical site URL, used in sitemap and OG tags.
NEXT_PUBLIC_WHATSAPP_NUMBERNoWaitlist target number. Defaults to the founder.
NEXT_PUBLIC_WHATSAPP_MESSAGENoPre-filled waitlist message.

02

Architecture of the marketing site

The site is a Next.js 16 App Router application with no SQL database and no user accounts. Pages are statically prerendered at build time. Two routes are dynamic: the OpenGraph image generator and the chat API. Both run on the Edge runtime for low cold-start latency.

The waitlist is a WhatsApp deep link, not a form. The concierge widget talks directly to the chat API, which streams a request to OpenRouter with a system prompt and returns the model reply. No conversation history is persisted server-side.

browser
  │
  ▼
[Next.js 16 App Router]
  │
  ├── /                    static prerender
  ├── /features            static prerender
  ├── /pricing             static prerender
  ├── /docs                static prerender
  ├── /faq                 static prerender
  ├── /blog/*              static prerender
  ├── /opengraph-image     edge runtime, on-demand
  └── /api/chat            edge runtime, POST
        │
        ▼
   [OpenRouter]
        │
        ▼
   reply -> browser (no persistence)

The planned Tangison Agent runtime, when it ships, will be a separate process. It will use a similar five-stage loop (intake, plan, dispatch, execute, reply) with an audit log written to local disk. That runtime is documented in MASTER-PLAN.md in the repository and is not part of this marketing site.

03

Chat API

The chat API is the only public endpoint on this site. It accepts a POST request with a messages array and returns a JSON reply. It is stateless: each call is independent and no conversation is stored.

Request

POST /api/chat
Content-Type: application/json

{
  "messages": [
    { "role": "user", "content": "What is Tangison Agent?" }
  ]
}

Response (200)

{
  "reply": "Tangison Agent is a self-hosted AI workforce that runs inside your own infrastructure. Join the waitlist on WhatsApp: https://wa.me/264813411522"
}

Response (503, no key configured)

{
  "error": "OpenRouter API key is not configured.",
  "reply": "The concierge is offline right now. Reach Tangi directly on WhatsApp: https://wa.me/264813411522"
}

The system prompt instructs the model to be honest about what exists today versus what is planned. It refuses to invent features and points visitors to /docs, /faq, or WhatsApp when it does not know.

04

Deployment

The site is designed to run anywhere Next.js runs. The two supported targets are Vercel (zero config) and a Docker container (for self-hosting behind your own firewall). Both targets use the same environment variables documented above.

Vercel

Push the repo to GitHub, import it into Vercel, set the OPENROUTER_API_KEY environment variable, deploy. Framework is auto-detected as Next.js.

# CLI alternative
npm i -g vercel
vercel link
vercel env add OPENROUTER_API_KEY
vercel --prod

Docker (self-host)

The Next.js standalone output in next.config.ts produces a minimal server image. Build, run, and put it behind your own reverse proxy.

# Build
bun run build

# Run the standalone server
node .next/standalone/server.js

# Or with Docker (write your own Dockerfile)
docker build -t tangison-agent .
docker run -p 3000:3000 \
  -e OPENROUTER_API_KEY=sk-or-v1-... \
  tangison-agent

Note: a production-ready Dockerfile is not in the repo yet. The standalone server works; the Dockerfile is on the roadmap. Use Vercel for the simplest path today.

05

Roadmap for the agent runtime

The Tangison Agent runtime is the actual self-hosted agent product. It does not exist yet. The marketing site you are reading is the only thing that ships today. The roadmap below describes what is planned, not what is delivered.

ComponentStatusDescription
Agent runtimePlannedThe five-stage loop: intake, plan, dispatch, execute, reply. Writes every step to an append-only audit log.
web_search skillPlannedSearch the public web via OpenRouter tool calling.
read_write_files skillPlannedRead, write, list files inside a sandboxed workspace.
run_code skillPlannedExecute TypeScript or Python in a sandboxed runtime.
fetch_url skillPlannedIssue HTTP requests with a configurable byte limit.
vercel_deploy skillPlannedTrigger a Vercel deployment, return preview URL.
send_message skillPlannedDeliver a message to Telegram, WhatsApp, or the web dashboard.
mcp_connector skillPlannedBridge to any Model Context Protocol server as a skill.
Production DockerfilePlannedReproducible signed appliance image for self-hosting.

The full design document is MASTER-PLAN.md in the repository. It is updated as the build progresses. There is no public release date yet.

06

Contributing

The repository accepts issues and pull requests on GitHub. For bugs in the marketing site, open an issue with a reproduction. For feature requests, describe the use case before proposing a solution. For roadmap questions, the FAQ page is the right place to start.

# Fork the repo on GitHub, then:
git clone https://github.com/YOUR_USERNAME/agent.git
cd agent
bun install
bun run dev

# Make your changes, then:
bun run lint
bun run build

# Push and open a pull request against main

Before you open a PR

  • Lint must pass: bun run lint
  • Build must pass: bun run build
  • No em dashes anywhere. Use regular hyphens or commas.
  • No fabricated statistics, testimonials, or feature claims.
  • If something is planned and not yet shipped, say so in the copy.

Want to ship the agent, not just the site?

The agent runtime is in development. Join the waitlist and you will hear from Tangi directly when the first build is ready to test.