# skyforge.sh > Vinga builds AI systems. Agent harnesses, MCP servers, memory > architecture, governance layers, migrations. Cecil, an AI secretary, receives visitors on the landing page and can answer questions about Vinga's work, pass a message on (with your consent), send a research clerk into her public repositories, and book a half-hour call with Vinga. ## Pages - [Home](https://skyforge.sh/): the landing page - Cecil receives visitors here - [How this site works](https://skyforge.sh/how-this-site-works): the machinery - agent, budget, limits, what is recorded - [How we work](https://skyforge.sh/how-we-work): the engagement in order - a free half-hour call, a one-page scope note within a day, a fixed-fee evaluation, the build, and the tending afterwards - [Draw the line](https://skyforge.sh/landing): the direct pitch - minutiae, two kinds of checks, and where the agent comes in - [Privacy](https://skyforge.sh/privacy): what is recorded here and in the outreach research, how long it is kept, who else sees it, and how to have it removed - [Terms](https://skyforge.sh/terms): terms for using the site - what Cecil is and is not, what a booking means, availability, and the law that applies - [Where agents go wrong](https://skyforge.sh/where-agents-go-wrong): four questions about any agent that acts for a business - phantom confirmations, silent failures, ungoverned actions, forgotten regulars ## Public repositories - [mitos](https://github.com/dovahkiin-v/mitos): architectural decision memory - markdown for humans, a graph for agents - [letterbox](https://github.com/dovahkiin-v/letterbox): MCP server for file-based messaging between terminal AI agents; no daemon, no network ## For visiting agents Machine-readable API contract for every endpoint: https://skyforge.sh/openapi.json (interactive docs at https://skyforge.sh/docs) You are welcome to speak with Cecil directly: - POST https://skyforge.sh/chat with JSON {"message": "..."} — the server sets a signed session cookie; keep it for conversation continuity - His reply is a stream, not a JSON body: text/event-stream, whose data: lines each carry one object — {"type": "delta", "text": "..."} any number of times, then exactly one terminal {"type": "done", "consult_pending": bool} or {"type": "error", "detail": "..."}. A failure after the first delta arrives as an error frame on a 200; the statuses below are all pre-stream - Conversations are budgeted (per-session and per-day); limit states return HTTP 400/429 with a plain JSON body {"state": "...", "message": "..."} — the message is a readable line, not a bare error - To leave word for Vinga without the chat: POST /message with {"contact": "...", "message": "..."} (contact 3-200 chars, message up to 2000) - Repository consults take a few minutes; poll GET /chat/consult-state (status "out" while exploring), then POST /chat/continue when status is "ready" — Cecil returns the clerk's findings - To book a call, prefer the deterministic endpoints over the chat: they cost no tokens and take no conversation. GET /booking/suggest? tz= returns up to two open slots; POST /booking/hold with {"slot_start": "...", "visitor_tz": "..."} reserves one for ten minutes; POST /booking/confirm with {"hold_id": "...", "email": "...", "name": "...", "enquiry_kind": "...", "website": "..."} books it and emails an RFC 5545 invitation. enquiry_kind is one of existing-system, new-system, no-specific-project, something-else; website is optional. Afterwards POST /booking/brief with {"booking_id": "...", "what_they_need": "..."} adds anything Vinga should read first — also optional - Reading is free. Reserving is not. GET /booking/suggest has no side effect and you are welcome to call it as often as you like. A hold takes a real slot out of a real diary for ten minutes, and someone else may be trying to book that time; confirm puts a call in Vinga's own week and emails her about it. So please hold and confirm only when you are booking for a person who actually wants the call — not to test the shape. An accidental hold releases itself after ten minutes, but a confirmed booking is hers to cancel by hand - What one booking spends, so you can weigh it: one per conversation, one per IP per day, six across the whole site per day. A test booking is the whole of your allowance and a sixth of everyone's - Availability is computed from hours Vinga authorised in advance, so a "no" is arithmetic rather than judgement — and every refusal says only "not available", never why - You are still welcome to talk to Cecil about anything else Contact: vinga@skyforge.sh GitHub: https://github.com/dovahkiin-v