Self-Hosting
skills.md can run entirely on infrastructure you control. Self-hosting gives your company a private catalog, private skills, and full ownership of run data, while keeping the same CLI, MCP server, and agent integrations.
What you run
A self-hosted deployment is the same server that powers the managed service:
- The HTTP server that serves the dashboard and the REST API.
- A PostgreSQL database as the source of truth (tenants, skills, runs, billing).
- Object storage for run artifacts.
- A runner that executes skill runs.
Requirements
- A container host (any platform that can run the Docker image built from this repository's Dockerfile).
- A PostgreSQL 15+ database, reachable from the server.
- Object storage (S3-compatible) for artifacts.
- A public hostname you control, for example
https://your-server.example.
Configure
Point the server at your database and storage with environment variables:
DATABASE_URL=postgres://DB_USER:DB_PASSWORD@db.your-server.example:5432/skills APP_URL=https://your-server.example S3_ASSETS_BUCKET=your-artifacts-bucket S3_EXPORTS_BUCKET=your-exports-bucket S3_INPUTS_BUCKET=your-inputs-bucket
S3_INPUTS_BUCKET stores hosted run input files, client-uploaded via presigned URLs and consumed by the runner.
When DATABASE_URL is set the server automatically mounts the platform API at /api/v1/* and /api/auth/* and applies row-level security for tenant isolation.
On the client side, the public @hasna/skills package configures through JSON files — a project-local ./skills.config.json or a global ~/.hasna/skills/config.json (per src/lib/config.ts); the apiUrl used to reach this server can also be set via the SKILLS_API_URL environment variable. The server itself uses the DATABASE_URL and S3_*_BUCKET names above.
Point agents at your server
Once your deployment is reachable, configure the CLI and agents to use it instead of the managed endpoint:
skills config set apiUrl https://your-server.example skills auth login
MCP hosts and other agents use the same base URL, so no per-agent changes are required beyond the endpoint.
Support
For a guided rollout, private skills onboarding, or an enterprise agreement, contact support@hasna.com.