chat-share
Officialchat-share
Share AI agent conversations via unique public links. Self-hosted, with a REST API + MCP server for agents, and an admin panel protected by OIDC login (via PocketID).
It's like ChatGPT's "Share" feature, but self-hosted and designed so AI agents themselves (Hermes, Claude, Codex, etc.) publish and manage the links.
โจ Features
REST API + MCP for AI agents to publish conversations and get a
/s/<id>link.Public link rendered as nice HTML (markdown, syntax highlighting, role-styled bubbles).
Optional password (argon2-hashed) to protect the link.
Optional expiration (
1h,24h,7d,30d, or never).Admin panel with OIDC (PocketID) login: view all chats, view counts, expiration, revoke/delete links.
View counter and status (active / expired / revoked).
SQLite (WAL), no external dependencies. Small multi-arch Docker image.
Related MCP server: agent-comm
๐ Docker quickstart
docker run -d --name chat-share \
-p 3000:3000 \
-v chat-share-data:/app/data \
-e BASE_URL="https://share.yourdomain.cl" \
-e SESSION_SECRET="$(openssl rand -hex 32)" \
-e AGENT_API_KEY="a-secret-key" \
-e OIDC_ISSUER="https://id.yourdomain.cl" \
-e OIDC_CLIENT_ID="chat-share" \
-e ADMIN_ALLOWED_SUBS="<user-sub>" \
ghcr.io/<your-user>/chat-share:latestOr with docker-compose.yml (see docker-compose.yml in the repo root):
services:
chat-share:
image: ghcr.io/<your-user>/chat-share:latest
restart: unless-stopped
ports: ["3000:3000"]
volumes: ["chat-share-data:/app/data"]
env_file: .env
volumes:
chat-share-data:Copy .env.example to .env, fill it in, and run docker compose up -d.
โ๏ธ Environment variables
Variable | Required | Default | Description |
| no |
| HTTP port |
| yes (prod) |
| Public base URL used to generate links |
| no |
| SQLite path (mount a volume) |
| yes | โ | Agent keys (comma-separated) |
| yes | โ | HMAC secret for cookies (โฅ32 random chars) |
| yes* | โ | PocketID issuer (e.g. |
| yes* | โ | Admin panel client ID |
| no | โ | Client secret (if the client is confidential) |
| no | โ | Audience required when validating MCP OAuth access tokens |
| no | โ | OIDC subs allowed in the admin panel (comma-separated) |
| no |
|
|
| no |
| Request body limit in bytes for API/MCP/unlock |
* OIDC is optional: without OIDC_ISSUER/OIDC_CLIENT_ID the admin panel is disabled,
but the API and public links keep working.
๐ค Publishing from an AI agent
Via REST API (curl)
curl -X POST https://share.yourdomain.cl/api/chats \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Network issue fix",
"agent": "hermes-agent",
"messages": [
{"role": "user", "content": "How do I configure DNS?"},
{"role": "assistant", "content": "Edit `/etc/resolv.conf`..."}
],
"password": "optional-123",
"expires_in": "7d"
}'Response:
{
"id": "mWqq9mPEdrRZ",
"url": "https://share.yourdomain.cl/s/mWqq9mPEdrRZ",
"expires_at": "2026-08-09T19:39:52.728Z",
"password_protected": true
}Via MCP
The /mcp endpoint is an MCP Streamable HTTP server (stateless). Tools:
Tool | Description |
| Publishes a conversation โ returns a URL. Asks the user about password/expiration if they didn't specify any. |
| Revokes a link ( |
| Link metadata ( |
MCP authentication โ two mechanisms are supported:
API key (same as the REST API): header
Authorization: Bearer <AGENT_API_KEY>.OAuth 2.0 against PocketID: the server acts as a resource server that delegates authorization to PocketID. Standard discovery flow:
Metadata:
https://share.yourdomain.cl/.well-known/oauth-protected-resource/mcpThe client does an OAuth login at PocketID and receives an access token sent as
Authorization: Bearer <access_token>.The server validates the token against PocketID's JWKS (
OIDC_ISSUERconfig).
Configure in Hermes (config.yaml or hermes mcp add):
mcp:
servers:
chat-share:
transport: streamable-http
url: https://share.yourdomain.cl/mcp
headers:
Authorization: "Bearer YOUR_API_KEY"If you prefer OAuth over an API key, point the MCP client at the metadata URL above and Hermes/Claude/Codex will perform the OAuth login against PocketID automatically.
When the MCP authenticates via OAuth, the agent field of published chats reflects the
user's identity (PocketID email/sub) instead of a generic name.
๐ Admin panel
Create an OIDC client in PocketID with redirect URI
https://share.yourdomain.cl/admin/callback.Configure
OIDC_ISSUERandOIDC_CLIENT_ID(plusOIDC_CLIENT_SECRETif applicable).Go to
/admin. You'll see all shared chats: title, agent, date, expiration, views, password protection, status, and actions (copy URL / revoke).
The flow uses Authorization Code + PKCE, validates the id_token against the issuer's JWKS
and creates a signed stateless session (HMAC).
๐ณ Docker image / CI
Multi-stage Dockerfile โ small runtime image (
oven/bun:1-alpine).GitHub Actions (
.github/workflows/docker.yml): on every push tomainor tagv*it builds forlinux/amd64andlinux/arm64and publishes to GHCR (ghcr.io/<repo>/chat-share).
๐งช Development
bun install
bun run src/index.ts # requires SESSION_SECRET and AGENT_API_KEY
bunx tsc --noEmit # typecheck
bun test # tests๐ License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceSelf-hosted MCP server giving AI agents persistent memory for personalization and context across conversations.Last updated195Apache 2.0
- Alicense-qualityDmaintenanceMCP server that enables AI coding agents to communicate, share state, and coordinate work in real time via MCP tools or REST API.Last updated1734MIT
- Alicense-qualityAmaintenanceMCP server for one-time secret sharing, enabling AI agents to securely claim and store secrets (e.g., API keys) via claim codes without exposing them in chat transcripts.Last updated5MIT
- Alicense-qualityCmaintenanceSelf-hosted MCP server for publishing, sharing, and reviewing AI agent artifacts with version history and pinned comments.Last updatedMIT
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Publish AI-generated HTML & Markdown to a hosted, shareable URL via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vmhq/chat-share'
If you have feedback or need assistance with the MCP directory API, please join our Discord server