{
  "name": "Lakebed Docs",
  "url": "https://docs.lakebed.dev",
  "description": "Public alpha documentation for Lakebed, an agent-native CLI and runtime for small full-stack TypeScript apps.",
  "sourceRepository": "https://github.com/pingdotgg/span",
  "agentEntrypoints": {
    "manifest": "/docs.json",
    "llms": "/llms.txt",
    "llmsFull": "/llms-full.txt"
  },
  "pages": [
    {
      "title": "Lakebed Docs",
      "description": "Lakebed is an agent-native CLI and runtime for building small full-stack TypeScript apps called capsules.",
      "section": "Docs",
      "source": "docs/README.md",
      "url": "/",
      "canonicalUrl": "https://docs.lakebed.dev/",
      "markdownUrl": "/index.md",
      "rawMarkdownUrl": "/raw/docs/README.md",
      "headings": [
        {
          "id": "lakebed-docs",
          "level": 1,
          "text": "Lakebed Docs"
        },
        {
          "id": "start-here",
          "level": 2,
          "text": "Start Here"
        },
        {
          "id": "server-contract",
          "level": 2,
          "text": "Server Contract"
        },
        {
          "id": "client-contract",
          "level": 2,
          "text": "Client Contract"
        },
        {
          "id": "auth-and-env",
          "level": 2,
          "text": "Auth And Env"
        },
        {
          "id": "inspect-the-runtime",
          "level": 2,
          "text": "Inspect The Runtime"
        },
        {
          "id": "deploy",
          "level": 2,
          "text": "Deploy"
        },
        {
          "id": "current-limits",
          "level": 2,
          "text": "Current Limits"
        },
        {
          "id": "read-next",
          "level": 2,
          "text": "Read Next"
        }
      ]
    },
    {
      "title": "Lakebed Reference",
      "description": "Use this as the quick contract when building a Lakebed capsule.",
      "section": "Docs",
      "source": "docs/reference.md",
      "url": "/reference/",
      "canonicalUrl": "https://docs.lakebed.dev/reference/",
      "markdownUrl": "/reference/index.md",
      "rawMarkdownUrl": "/raw/docs/reference.md",
      "headings": [
        {
          "id": "lakebed-reference",
          "level": 1,
          "text": "Lakebed Reference"
        },
        {
          "id": "capsule",
          "level": 2,
          "text": "Capsule"
        },
        {
          "id": "module-boundaries",
          "level": 2,
          "text": "Module Boundaries"
        },
        {
          "id": "server-api",
          "level": 2,
          "text": "Server API"
        },
        {
          "id": "data-api",
          "level": 2,
          "text": "Data API"
        },
        {
          "id": "external-endpoints",
          "level": 2,
          "text": "External Endpoints"
        },
        {
          "id": "client-api",
          "level": 2,
          "text": "Client API"
        },
        {
          "id": "auth",
          "level": 2,
          "text": "Auth"
        },
        {
          "id": "server-env",
          "level": 2,
          "text": "Server Env"
        },
        {
          "id": "styling",
          "level": 2,
          "text": "Styling"
        },
        {
          "id": "runtime-inspection",
          "level": 2,
          "text": "Runtime Inspection"
        },
        {
          "id": "cli",
          "level": 2,
          "text": "CLI"
        },
        {
          "id": "deploy-behavior",
          "level": 2,
          "text": "Deploy Behavior"
        }
      ]
    },
    {
      "title": "Capsule Database",
      "description": "New Lakebed artifacts use database API v1. Database calls are async, queries require declared indexes, and every handler runs inside one parent-owned transaction.",
      "section": "Docs",
      "source": "docs/database.md",
      "url": "/database/",
      "canonicalUrl": "https://docs.lakebed.dev/database/",
      "markdownUrl": "/database/index.md",
      "rawMarkdownUrl": "/raw/docs/database.md",
      "headings": [
        {
          "id": "capsule-database",
          "level": 1,
          "text": "Capsule Database"
        },
        {
          "id": "indexes",
          "level": 2,
          "text": "Indexes"
        },
        {
          "id": "pagination",
          "level": 2,
          "text": "Pagination"
        },
        {
          "id": "relationships",
          "level": 2,
          "text": "Relationships"
        },
        {
          "id": "consistency",
          "level": 2,
          "text": "Consistency"
        },
        {
          "id": "migrating-legacy-code",
          "level": 2,
          "text": "Migrating Legacy Code"
        }
      ]
    },
    {
      "title": "Database API v1 Migration Guide",
      "description": "Use this guide when upgrading a Lakebed capsule from the synchronous full-scan database API to database API v1.",
      "section": "Docs",
      "source": "docs/database-migration.md",
      "url": "/database-migration/",
      "canonicalUrl": "https://docs.lakebed.dev/database-migration/",
      "markdownUrl": "/database-migration/index.md",
      "rawMarkdownUrl": "/raw/docs/database-migration.md",
      "headings": [
        {
          "id": "database-api-v1-migration-guide",
          "level": 1,
          "text": "Database API v1 Migration Guide"
        },
        {
          "id": "syntax-changes",
          "level": 2,
          "text": "Syntax Changes"
        },
        {
          "id": "designing-indexes",
          "level": 2,
          "text": "Designing Indexes"
        },
        {
          "id": "pagination",
          "level": 2,
          "text": "Pagination"
        },
        {
          "id": "data-and-deployment",
          "level": 2,
          "text": "Data And Deployment"
        },
        {
          "id": "agent-migration-prompt",
          "level": 2,
          "text": "Agent Migration Prompt"
        }
      ]
    },
    {
      "title": "Capsule API",
      "description": "This page shows the API shape an agent should use when authoring a Lakebed app.",
      "section": "Docs",
      "source": "docs/capsule-api.md",
      "url": "/capsule-api/",
      "canonicalUrl": "https://docs.lakebed.dev/capsule-api/",
      "markdownUrl": "/capsule-api/index.md",
      "rawMarkdownUrl": "/raw/docs/capsule-api.md",
      "headings": [
        {
          "id": "capsule-api",
          "level": 1,
          "text": "Capsule API"
        },
        {
          "id": "file-layout",
          "level": 2,
          "text": "File Layout"
        },
        {
          "id": "define-the-server",
          "level": 2,
          "text": "Define The Server"
        },
        {
          "id": "use-shared-code-carefully",
          "level": 2,
          "text": "Use Shared Code Carefully"
        },
        {
          "id": "build-the-client",
          "level": 2,
          "text": "Build The Client"
        },
        {
          "id": "auth",
          "level": 2,
          "text": "Auth"
        },
        {
          "id": "server-env",
          "level": 2,
          "text": "Server Env"
        },
        {
          "id": "run-and-inspect",
          "level": 2,
          "text": "Run And Inspect"
        },
        {
          "id": "deploy",
          "level": 2,
          "text": "Deploy"
        }
      ]
    },
    {
      "title": "Identity and authentication",
      "description": "Lakebed Auth is the built-in identity layer for capsules. Guest auth works with zero setup, and Google sign-in is first-party: no OAuth dashboards, no keys to configure, no redirec",
      "section": "Docs",
      "source": "docs/auth.md",
      "url": "/auth/",
      "canonicalUrl": "https://docs.lakebed.dev/auth/",
      "markdownUrl": "/auth/index.md",
      "rawMarkdownUrl": "/raw/docs/auth.md",
      "headings": [
        {
          "id": "identity-and-authentication",
          "level": 1,
          "text": "Identity and authentication"
        },
        {
          "id": "identity-contract",
          "level": 2,
          "text": "Identity contract"
        },
        {
          "id": "what-your-app-can-rely-on",
          "level": 2,
          "text": "What your app can rely on"
        },
        {
          "id": "auth-shape",
          "level": 2,
          "text": "Auth shape"
        },
        {
          "id": "local-dev",
          "level": 2,
          "text": "Local dev"
        },
        {
          "id": "migrating-from-older-identities",
          "level": 2,
          "text": "Migrating from older identities"
        }
      ]
    },
    {
      "title": "Object Storage",
      "description": "Lakebed has built-in object storage for user-uploaded files: avatars, attachments, documents. File bytes go browser ↔ runner ↔ S3-compatible bucket directly. They never pass throug",
      "section": "Docs",
      "source": "docs/storage.md",
      "url": "/storage/",
      "canonicalUrl": "https://docs.lakebed.dev/storage/",
      "markdownUrl": "/storage/index.md",
      "rawMarkdownUrl": "/raw/docs/storage.md",
      "headings": [
        {
          "id": "object-storage",
          "level": 1,
          "text": "Object Storage"
        },
        {
          "id": "upload-and-delete-from-the-client",
          "level": 2,
          "text": "Upload And Delete From The Client"
        },
        {
          "id": "reads-are-just-urls",
          "level": 2,
          "text": "Reads Are Just URLs"
        },
        {
          "id": "http-surface",
          "level": 2,
          "text": "HTTP Surface"
        },
        {
          "id": "auth-and-safety",
          "level": 2,
          "text": "Auth And Safety"
        },
        {
          "id": "blocked-file-types",
          "level": 2,
          "text": "Blocked File Types"
        },
        {
          "id": "developer-dashboard-and-moderation",
          "level": 2,
          "text": "Developer Dashboard And Moderation"
        },
        {
          "id": "limits",
          "level": 2,
          "text": "Limits"
        },
        {
          "id": "errors",
          "level": 2,
          "text": "Errors"
        },
        {
          "id": "example-profile-picture",
          "level": 2,
          "text": "Example: Profile Picture"
        },
        {
          "id": "local-dev",
          "level": 2,
          "text": "Local Dev"
        },
        {
          "id": "not-included",
          "level": 2,
          "text": "Not Included"
        }
      ]
    },
    {
      "title": "Lakebed Examples",
      "description": "Use these capsules as patterns for app-building agents. Each example is a complete Lakebed app with the same file layout your generated app should use:",
      "section": "Examples",
      "source": "examples/README.md",
      "url": "/examples/",
      "canonicalUrl": "https://docs.lakebed.dev/examples/",
      "markdownUrl": "/examples/index.md",
      "rawMarkdownUrl": "/raw/examples/README.md",
      "headings": [
        {
          "id": "lakebed-examples",
          "level": 1,
          "text": "Lakebed Examples"
        },
        {
          "id": "what-to-copy",
          "level": 2,
          "text": "What To Copy"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        }
      ]
    },
    {
      "title": "Todo Example",
      "description": "This capsule shows the smallest useful Lakebed app pattern: authenticated per-user data with server-owned mutations.",
      "section": "Examples",
      "source": "examples/todo/README.md",
      "url": "/examples/todo/",
      "canonicalUrl": "https://docs.lakebed.dev/examples/todo/",
      "markdownUrl": "/examples/todo/index.md",
      "rawMarkdownUrl": "/raw/examples/todo/README.md",
      "headings": [
        {
          "id": "todo-example",
          "level": 1,
          "text": "Todo Example"
        },
        {
          "id": "what-it-shows",
          "level": 2,
          "text": "What It Shows"
        },
        {
          "id": "server-pattern",
          "level": 2,
          "text": "Server Pattern"
        },
        {
          "id": "run-it",
          "level": 2,
          "text": "Run It"
        }
      ]
    },
    {
      "title": "Guestbook Example",
      "description": "This capsule shows a shared feed where every signed entry stores author metadata from Lakebed auth.",
      "section": "Examples",
      "source": "examples/guestbook/README.md",
      "url": "/examples/guestbook/",
      "canonicalUrl": "https://docs.lakebed.dev/examples/guestbook/",
      "markdownUrl": "/examples/guestbook/index.md",
      "rawMarkdownUrl": "/raw/examples/guestbook/README.md",
      "headings": [
        {
          "id": "guestbook-example",
          "level": 1,
          "text": "Guestbook Example"
        },
        {
          "id": "what-it-shows",
          "level": 2,
          "text": "What It Shows"
        },
        {
          "id": "server-pattern",
          "level": 2,
          "text": "Server Pattern"
        },
        {
          "id": "run-it",
          "level": 2,
          "text": "Run It"
        }
      ]
    }
  ]
}
