{
  "$schema": "https://schema.org/Person",
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "Michael Gifford-Santos",
  "jobTitle": "AI / founding product engineer",
  "description": "Builds AI products end to end — the agents, the infrastructure, the interface, and the brand.",
  "url": "https://michaelgifford.com",
  "email": "hello@michaelgifford.com",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Seattle",
    "addressRegion": "WA",
    "addressCountry": "US"
  },
  "relocatingTo": "San Francisco Bay Area",
  "sameAs": [
    "https://github.com/mijkal",
    "https://www.linkedin.com/in/michaelgifford"
  ],
  "knowsAbout": {
    "AI/ML systems": [
      "LLM agent orchestration",
      "multi-model workflows (Claude, Codex, Antigravity, others in concert)",
      "RAG and hybrid retrieval (Qdrant, reranking, RRF)",
      "MCP",
      "Anthropic API / Claude Agent SDK",
      "MLX inference, continuous batching, on-device",
      "agent trust boundaries",
      "cost governance"
    ],
    "Real-time": [
      "LiveKit / WebRTC voice agents",
      "self-hosted media servers (Jitsi, mediasoup)",
      "TURN/NAT traversal",
      "latency budgeting",
      "live context grounding — in production since 2020"
    ],
    "Languages": [
      "Python",
      "TypeScript / JavaScript",
      "SQL",
      "shell"
    ],
    "Platform & ops": [
      "FastAPI",
      "Node (Express, Fastify)",
      "REST / GraphQL",
      "React / React Native / Expo",
      "auth and applied crypto (OAuth, JWT minting, entitlements, Ed25519 identity, HMAC signing, AES)",
      "QUIC",
      "Docker",
      "Kubernetes (k3s)",
      "Proxmox",
      "CI/CD",
      "Linux administration",
      "Linode / Akamai",
      "Cloudflare (DNS, TLS, CDN)",
      "AWS SES",
      "networking and firewalls (OPNsense, VLANs)",
      "S3-compatible storage",
      "self-hosting continuously since the 1990s"
    ],
    "Data & serving": [
      "Postgres",
      "MySQL",
      "SQLite",
      "MongoDB",
      "Supabase (self-hosted)",
      "Firebase (RTDB, Firestore)",
      "Caddy",
      "nginx"
    ],
    "Mobile": [
      "iOS + Android",
      "React Native / Expo",
      "SwiftUI",
      "StoreKit / RevenueCat",
      "App Store and Play release ops ---"
    ]
  },
  "systems": [
    {
      "name": "Sigil",
      "summary": "agent-session infrastructure · Go · open source (MIT), [mijkal.github.io/sigil](https://mijkal.github.io/sigil/)",
      "detail": "Daemon that turns tmux into a supervised process manager for long-running AI agent sessions: observable, interruptible and auto-restoring after host crashes — with sigil-web, a browser client that attaches to any session from any device over HTTPS, so the fleet is reachable from wherever I am. Built so the work is not tied to the machine I am sitting at: sessions live on a server, and I drop into the same running one from my workstation, a laptop, or a phone. Closing the lid stops nothing.",
      "url": "https://github.io/sigil](https://mijkal.github.io/sigil/)"
    },
    {
      "name": "Drydock",
      "summary": "multi-agent operations platform · React / FastAPI / Postgres",
      "detail": "Operator dashboard coordinating coding-agent work across a ~16-project portfolio. It runs real work today — my job search among it — under supervised delegation and human gating; full autonomy is the direction, not the current state."
    },
    {
      "name": "Mycellm",
      "summary": "distributed LLM inference network · Python / QUIC · open source (Apache-2.0),",
      "detail": "PyPI, iOS app · [mycellm.ai](https://mycellm.ai) Aiming at a BitTorrent-style protocol for inference: pool heterogeneous hardware, contribute capacity, draw on it. What runs today is a QUIC overlay with NAT-friendly reverse connections — seeders dial out and the gateway routes inference back down the live session, because hole-punching does not survive symmetric NAT. Public, private and federated networks are all first-class, and a node serves local weights or brokers any compatible API behind one interface."
    }
  ],
  "pages": {
    "work": "https://michaelgifford.com/work",
    "resume": "https://michaelgifford.com/resume",
    "contact": "https://michaelgifford.com/contact",
    "colophon": "https://michaelgifford.com/colophon"
  },
  "resumePdf": "https://michaelgifford.com/resume/Gifford.Michael-Resume.pdf",
  "aliases": {
    "https://michaelgifford.com/cv": "https://michaelgifford.com/resume",
    "https://michaelgifford.com/pdf": "https://michaelgifford.com/resume/Gifford.Michael-Resume.pdf",
    "https://michaelgifford.com/in": "https://www.linkedin.com/in/michaelgifford",
    "https://michaelgifford.com/gh": "https://github.com/mijkal"
  },
  "vcard": "https://michaelgifford.com/contact/michael-gifford-santos.vcf",
  "llmsTxt": "https://michaelgifford.com/llms.txt",
  "_meta": {
    "generated_by": "scripts/build-me-json.py",
    "source": "the résumé that also builds the PDFs, /resume and the agent's grounding",
    "generated_at": "2026-08-10",
    "note": "Prose for a model reading the site is at /llms.txt. The site's own agent can be asked questions directly."
  }
}
