A lightweight language model chat service accessible through HTTP, SSH, DNS, and API. One binary, no JavaScript, no tracking.
# Web (no JavaScript)
open https://ch.at
# Terminal
curl ch.at/?q=hello # Query parameter (handles special chars)
curl ch.at/what-is-rust # Path-based (cleaner URLs, hyphens become spaces)
ssh ch.at
# DNS tunneling
dig what-is-2+2.ch.at TXT
# API (OpenAI-compatible)
curl ch.at/v1/chat/completions
Privacy by design:
⚠️ PRIVACY WARNING: Your queries are sent to LLM providers (OpenAI, Anthropic, etc.) who may log and store them according to their policies. While ch.at doesn't log anything, the upstream providers might. Never send passwords, API keys, or sensitive information.
Current Production Model: OpenAI's GPT-4o. We plan to expand model access in the future.
# Copy the example LLM configuration (llm.go is gitignored)
cp llm.go.example llm.go
# Edit llm.go and add your API key
# Supports OpenAI, Anthropic Claude, or local models (Ollama)
# For HTTPS, you'll need cert.pem and key.pem files:
# Option 1: Use Let's Encrypt (recommended for production)
# Option 2: Use your existing certificates
# Option 3: Self-signed for testing:
# openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
# Build and run
go build -o chat .
sudo ./chat # Needs root for ports 80/443/53/22
# Build the self-test tool
go build -o selftest ./cmd/selftest
# Run all protocol tests
./selftest http://localhost
# Test specific queries
curl localhost/what-is-go
curl localhost/?q=hello
To run without sudo, edit the constants in chat.go:
const (
HTTP_PORT = 8080 // Instead of 80
HTTPS_PORT = 0 // Disabled
SSH_PORT = 2222 // Instead of 22
DNS_PORT = 0 // Disabled
)
Then build:
go build -o chat .
./chat # No sudo needed for high ports
# Test the service
./selftest http://localhost:8080
Edit constants in source files:
chat.go (set to 0 to disable)util.goMIT License - see LICENSE file
Before adding features: