Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
> **Confidential compute behind Intel TDX, payable per chunk on Tempo.**
> No API keys. No trust required. — *MPP Hackathon @ Futura Camp Berlin 2026.*

[![Live](https://img.shields.io/badge/live-temprouter.onrender.com-00ff88)](https://temprouter.onrender.com)
[![Live](https://img.shields.io/badge/live-mpp.solrouter.com-00ff88)](https://mpp.solrouter.com)
[![GitHub](https://img.shields.io/badge/GitHub-Router--Labs/tempRouter-181717)](https://github.com/Router-Labs/tempRouter)
[![License](https://img.shields.io/badge/license-MIT-blue)](#license)

**Live:** https://temprouter.onrender.com · [OpenAPI](https://temprouter.onrender.com/openapi.json) · [Attestation](https://temprouter.onrender.com/tee/attestation) · [Agent Skill](https://temprouter.onrender.com/SKILL.md)
**Live:** https://mpp.solrouter.com · [OpenAPI](https://mpp.solrouter.com/openapi.json) · [Attestation](https://mpp.solrouter.com/tee/attestation) · [Agent Skill](https://mpp.solrouter.com/SKILL.md)

---

Expand Down Expand Up @@ -126,7 +126,7 @@ Four surfaces, same verify-before-pay lane:
import { TempRouter, detectSensitive } from '@temprouter/sdk'

const client = new TempRouter({
serverUrl: 'https://temprouter.onrender.com',
serverUrl: 'https://mpp.solrouter.com',
account: process.env.AGENT_PRIVATE_KEY as `0x${string}`,
})

Expand Down
10 changes: 5 additions & 5 deletions docs/DISCOVERY.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ tempRouter immediately discoverable by any MPP-speaking agent.
**Steps:**

1. Go to **https://www.mppscan.com/register**
2. Enter the server URL: `https://temprouter.onrender.com`
2. Enter the server URL: `https://mpp.solrouter.com`
3. MPPScan will auto-discover the service via the standard MPP discovery format
(it reads `/openapi.json` and the `WWW-Authenticate` 402 challenge)
4. Fill in any additional metadata:
Expand Down Expand Up @@ -50,15 +50,15 @@ The official MPP documentation site maintains a curated service directory at
{
id: "temprouter",
name: "tempRouter",
url: "https://temprouter.onrender.com",
serviceUrl: "https://temprouter.onrender.com",
url: "https://mpp.solrouter.com",
serviceUrl: "https://mpp.solrouter.com",
description: "Payable, end-to-end-encrypted LLM inference. Verify a real Intel TDX enclave with DCAP, then pay per response-chunk. The relay is blind — it forwards ciphertext and holds no key.",
categories: ["ai"],
integration: "first-party",
tags: ["llm", "tee", "tdx", "private", "encrypted", "phala", "confidential"],
docs: {
homepage: "https://github.com/Router-Labs/tempRouter",
llmsTxt: "https://temprouter.onrender.com/llms.txt",
llmsTxt: "https://mpp.solrouter.com/llms.txt",
},
provider: { name: "Router Labs", url: "https://github.com/Router-Labs" },
realm: MPP_REALM,
Expand Down Expand Up @@ -143,7 +143,7 @@ This requires:

Validate with:
```bash
npx @agentcash/discovery check https://temprouter.onrender.com
npx @agentcash/discovery check https://mpp.solrouter.com
```

Current status:
Expand Down
6 changes: 3 additions & 3 deletions docs/HACKATHON.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Pay-per-use beats API keys for autonomous agents. TEE + Tempo micropayments is a

## Links

- **Live:** https://temprouter.onrender.com
- **Live:** https://mpp.solrouter.com
- **GitHub:** https://github.com/Router-Labs/tempRouter
- **OpenAPI:** https://temprouter.onrender.com/openapi.json
- **Agent Skill:** https://temprouter.onrender.com/SKILL.md
- **OpenAPI:** https://mpp.solrouter.com/openapi.json
- **Agent Skill:** https://mpp.solrouter.com/SKILL.md
6 changes: 3 additions & 3 deletions evidence.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

| | |
|---|---|
| **Endpoint** | `https://temprouter.onrender.com` → `POST /v1/chat/completions/stream` |
| **Endpoint** | `https://mpp.solrouter.com` → `POST /v1/chat/completions/stream` |
| **Network** | Tempo Moderato **testnet**, chain `42431`, currency **pathUSD** (TIP-20, 6 dp) |
| **Payer (agent)** | `0x9BD2B3C6dc9bDF069333EaeC42596E6d119C9f70` |
| **Payee (service)** | `0xa726a1CD723409074DF9108A2187cfA19899aCF8` (matches `src/config.ts` `TEMPO_RECIPIENT`) |
Expand Down Expand Up @@ -183,10 +183,10 @@ curl -s $RPC -H 'content-type: application/json' \
```bash
cd tempRouter
# fund a Tempo testnet key (see README), then:
SERVER_URL=https://temprouter.onrender.com AGENT_PRIVATE_KEY=0x… npm run agent
SERVER_URL=https://mpp.solrouter.com AGENT_PRIVATE_KEY=0x… npm run agent
# → detect → DCAP verify → encrypt → open MPP channel (on-chain) → pay per chunk → decrypt
# free attestation gate only (no payment):
SERVER_URL=https://temprouter.onrender.com npm run cli -- verify
SERVER_URL=https://mpp.solrouter.com npm run cli -- verify
```

---
Expand Down
12 changes: 6 additions & 6 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🔒</text></svg>" />
<title>tempRouter — payable, end-to-end-encrypted LLM inference on MPP</title>
<meta name="description" content="A payable inference endpoint on MPP (Tempo). Pay per response-chunk in pathUSD after your agent verifies a real Intel TDX enclave with Intel DCAP — end-to-end encrypted, the relay is blind. Drop-in via SDK, CLI, MCP, or agent skill." />
<link rel="canonical" href="https://temprouter.onrender.com/" />
<link rel="canonical" href="https://mpp.solrouter.com/" />
<!-- Agent / registry discovery surfaces -->
<link rel="service-desc" type="application/json" href="/openapi.json" title="MPP / OpenAPI discovery" />
<link rel="alternate" type="text/markdown" href="/llms.txt" title="llms.txt — agent context" />
Expand All @@ -17,7 +17,7 @@
<meta property="og:site_name" content="tempRouter" />
<meta property="og:title" content="tempRouter — payable, E2E-encrypted LLM inference on MPP" />
<meta property="og:description" content="Pay an LLM in pathUSD only after your agent proves (Intel DCAP) it runs inside a real Intel TDX enclave that can't read the prompt." />
<meta property="og:url" content="https://temprouter.onrender.com/" />
<meta property="og:url" content="https://mpp.solrouter.com/" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="tempRouter — payable, E2E-encrypted LLM inference on MPP" />
<meta name="twitter:description" content="Verify a real Intel TDX enclave, then pay per response-chunk in pathUSD. End-to-end encrypted; the relay is blind." />
Expand All @@ -27,8 +27,8 @@
"@type": "WebAPI",
"name": "tempRouter",
"description": "Payable, end-to-end-encrypted LLM inference on MPP (Tempo). Verify a real Intel TDX enclave with Intel DCAP, then pay per response-chunk in pathUSD.",
"url": "https://temprouter.onrender.com/",
"documentation": "https://temprouter.onrender.com/llms.txt",
"url": "https://mpp.solrouter.com/",
"documentation": "https://mpp.solrouter.com/llms.txt",
"provider": { "@type": "Organization", "name": "Router Labs", "url": "https://github.com/Router-Labs" },
"offers": { "@type": "Offer", "price": "0.0002", "priceCurrency": "pathUSD", "description": "per response-chunk, MPP session on Tempo" }
}
Expand Down Expand Up @@ -347,7 +347,7 @@ <h2>Drop it into your agent<span class="period">.</span></h2>
<pre><span class="c">// @temprouter/sdk — the whole lane in one call</span>
<span class="k">import</span> { TempRouter, detectSensitive } <span class="k">from</span> <span class="s">'@temprouter/sdk'</span>

<span class="k">const</span> client = <span class="k">new</span> TempRouter({ serverUrl: <span class="s">'https://temprouter.onrender.com'</span>, account }) <span class="c">// funded Tempo wallet</span>
<span class="k">const</span> client = <span class="k">new</span> TempRouter({ serverUrl: <span class="s">'https://mpp.solrouter.com'</span>, account }) <span class="c">// funded Tempo wallet</span>

<span class="k">if</span> (detectSensitive(prompt).sensitive) {
<span class="k">const</span> { answer, paid } = <span class="k">await</span> client.infer(prompt) <span class="c">// verify → encrypt → pay → decrypt</span>
Expand Down Expand Up @@ -382,7 +382,7 @@ <h2>Speak MPP, get inference<span class="period">.</span></h2>
<div class="desc">The live enclave attestation (<code>teeType: INTEL-TDX-PHALA</code> + TDX quote). Verify with Intel DCAP before signing a voucher.</div>
</div>
<pre><span class="c"># any MPP-speaking agent — the CLI handles the 402 → pay → retry</span>
tempo request <span class="s">https://temprouter.onrender.com/v1/chat/completions/stream</span> \
tempo request <span class="s">https://mpp.solrouter.com/v1/chat/completions/stream</span> \
-d <span class="s">'{"encryptedPrompt":"…","model":"nosana:gpt-oss:20b"}'</span></pre>
</div></section>

Expand Down
8 changes: 4 additions & 4 deletions public/robots.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ User-agent: *
Allow: /

# Agent / registry discovery surfaces:
# MPP / OpenAPI: https://temprouter.onrender.com/openapi.json
# Agent context: https://temprouter.onrender.com/llms.txt
# Agent skill: https://temprouter.onrender.com/SKILL.md
# Attestation: https://temprouter.onrender.com/tee/attestation
# MPP / OpenAPI: https://mpp.solrouter.com/openapi.json
# Agent context: https://mpp.solrouter.com/llms.txt
# Agent skill: https://mpp.solrouter.com/SKILL.md
# Attestation: https://mpp.solrouter.com/tee/attestation
2 changes: 1 addition & 1 deletion sdk/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ npm i @temprouter/sdk mppx @solrouter/sdk viem
import { TempRouter, detectSensitive } from '@temprouter/sdk'

const client = new TempRouter({
serverUrl: 'https://temprouter.onrender.com',
serverUrl: 'https://mpp.solrouter.com',
account: process.env.AGENT_PRIVATE_KEY as `0x${string}`, // funded Tempo testnet wallet
})

Expand Down
4 changes: 2 additions & 2 deletions sdk/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const PROOF_SENTINEL = '__TEMPROUTER_PROOF__' // final SSE frame carrying the po
const DEFAULT_MODEL = 'nosana:gpt-oss:20b'

export type TempRouterOptions = {
/** tempRouter base URL, e.g. https://temprouter.onrender.com */
/** tempRouter base URL, e.g. https://mpp.solrouter.com */
serverUrl: string
/** Payer wallet: a viem `Account`, or a `0x` private key (Tempo testnet). Only
* required to pay — `verify()` works without it. */
Expand Down Expand Up @@ -81,7 +81,7 @@ export class AttestationError extends Error {
* ```ts
* import { TempRouter, detectSensitive } from '@temprouter/sdk'
*
* const client = new TempRouter({ serverUrl: 'https://temprouter.onrender.com', account: '0x…' })
* const client = new TempRouter({ serverUrl: 'https://mpp.solrouter.com', account: '0x…' })
* if (detectSensitive(prompt).sensitive) {
* const { answer } = await client.infer(prompt) // verify → encrypt → pay → decrypt
* }
Expand Down
8 changes: 4 additions & 4 deletions skills/temprouter/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Call tempRouter — a payable, end-to-end-encrypted LLM inference e

# tempRouter — payable confidential inference (entrypoint)

**Live endpoint:** `https://temprouter.onrender.com`
**Live endpoint:** `https://mpp.solrouter.com`
- `POST /v1/chat/completions/stream` — the payable inference endpoint (MPP 402 → pay → SSE)
- `GET /tee/attestation` — enclave attestation (verify before you pay)
- `GET /openapi.json` · `GET /llms.txt` — MPP service discovery
Expand All @@ -17,7 +17,7 @@ Three fastest ways to try tempRouter right now:
### 1. Verify-only (free, no payment)
```bash
temprouter verify
# or: curl https://temprouter.onrender.com/tee/attestation | jq
# or: curl https://mpp.solrouter.com/tee/attestation | jq
```
Fetches the live enclave attestation report and runs DCAP verification. Costs nothing —
just confirms the enclave is real. Good for kicking the tires.
Expand Down Expand Up @@ -66,7 +66,7 @@ Pick a surface; all run the same dance (**verify → encrypt → pay per chunk
import { TempRouter, detectSensitive } from '@temprouter/sdk'

const client = new TempRouter({
serverUrl: 'https://temprouter.onrender.com',
serverUrl: 'https://mpp.solrouter.com',
account: process.env.AGENT_PRIVATE_KEY as `0x${string}`, // funded Tempo testnet wallet
})
if (detectSensitive(prompt).sensitive) {
Expand Down Expand Up @@ -150,4 +150,4 @@ attestation. This indicates a potential MITM or enclave swap mid-session.
```bash
npx skills add Router-Labs/tempRouter
```
Or read it live at `https://temprouter.onrender.com/SKILL.md`.
Or read it live at `https://mpp.solrouter.com/SKILL.md`.
Loading