Skip to main content

Services

Hill90 is composed of application services, infrastructure services, and an observability stack.

Application Services

ServiceLanguageURLDescription
APITypeScript (Express)api.hill90.comREST API gateway — agent CRUD, model management, user profiles
AI (Model-Router)Python (FastAPI)Internal onlyPolicy-gated LLM inference gateway for agents
Knowledge (AKM)Python (FastAPI)Internal onlyPersistent agent memory with full-text search
MCPPython (FastAPI)ai.hill90.com/mcpModel Context Protocol gateway (JWT-authenticated)
AgentboxPython (Starlette/uvicorn)Internal onlySandboxed agent runtime containers
KeycloakJavaauth.hill90.comOIDC/OAuth2 identity provider
UITypeScript (Next.js)hill90.comFrontend application with Auth.js v5 session management

API Service

The API service is the primary REST gateway and control plane. It handles:
  • Agent lifecycle management (create, configure, start, stop, delete)
  • Agent container operations (status, logs, config generation)
  • Provider connections and user model management (BYOK)
  • Model policy management and assignment
  • Usage tracking queries
  • Knowledge entry browsing and search (proxied from AKM)
  • User profile and avatar management
  • JWT validation via Keycloak

AI Service (Model-Router)

The AI service is an internal model-router gateway — it is not publicly accessible. Agent containers reach it on the internal network to perform LLM inference. It enforces model access policies (allowed models, rate limits, token budgets), resolves user-owned model configurations, and proxies requests to LLM providers. Supports chat completions (streaming and non-streaming) and embeddings.

Knowledge Service (AKM)

The Agent Knowledge Manager provides persistent memory for agent containers. Agents write knowledge entries (plans, decisions, journals, research notes) that survive across sessions. The service provides full-text search, append-only journaling, and intelligent context assembly with configurable token budgets. Knowledge is scoped per agent — agents cannot read each other’s entries. Users can browse and search their agents’ knowledge via the API service proxy.

Agentbox

Each agent runs in a sandboxed container with policy-gated functions:
  • Shell — Command execution with binary allowlists and deny patterns
  • Filesystem — File operations with path restrictions and read-only mode
  • Identity — Agent personality (SOUL.md) and rules (RULES.md), loaded at startup
  • Health — HTTP health endpoint for Docker healthcheck
Agentbox containers are network-isolated and can only communicate with the AI service (for inference) and Knowledge service (for memory). They cannot reach the public internet or other services.

MCP Service

The MCP (Model Context Protocol) gateway exposes tool-augmented AI capabilities at ai.hill90.com/mcp. All requests require Keycloak JWT authentication. This is the only publicly routed service on the ai.hill90.com hostname.

Keycloak

Keycloak provides centralized identity management:
  • User registration and login
  • OIDC/OAuth2 token issuance
  • Role-based access control (user, admin)
  • Account management

UI

The Next.js frontend provides:
  • Keycloak-backed authentication (via Auth.js v5)
  • Agent management dashboard
  • User profile and avatar management

Infrastructure Services

ServiceURLDescription
Traefiktraefik.hill90.com (VPN-only)Reverse proxy, load balancer, automatic HTTPS
DNS ManagerInternal onlyDNS-01 challenge webhook for Let’s Encrypt
Portainerportainer.hill90.com (VPN-only)Docker container management UI
PostgreSQLInternal onlyRelational database
MinIOstorage.hill90.com (VPN-only)S3-compatible object storage
OpenBaovault.hill90.com (VPN-only)Secrets management (vault)
LiteLLMlitellm.hill90.com (VPN-only)LLM proxy for provider API routing (internal to AI service); admin dashboard exposed via Tailscale

LiteLLM

LiteLLM is a stateless LLM proxy that routes inference requests to provider APIs (OpenAI, Anthropic). The AI service (model-router) reaches LiteLLM on the internal Docker network at http://litellm:4000 — it is not publicly accessible for API traffic. The admin dashboard is exposed at litellm.hill90.com for operational visibility, restricted to the Tailscale network (VPN-only).

Observability Stack

ServiceDescription
PrometheusMetrics collection and alerting
GrafanaDashboards and data exploration (grafana.hill90.com, VPN-only)
LokiLog aggregation
TempoDistributed tracing
PromtailLog collector (ships to Loki)
Node ExporterHost-level metrics
cAdvisorContainer metrics
postgres-exporterPostgreSQL metrics