{
  "version": 1,
  "product": "servix",
  "generatedAt": "2026-07-26T13:58:18.585Z",
  "records": [
    {
      "id": "listener-vs-proactive",
      "type": "concept",
      "title": "Listener vs proactive workers",
      "summary": "Listener workers wait for external events and are fully implemented; proactive workers run on schedules and are typed but not executed yet in v0.1.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "workers"
      ],
      "goals": [],
      "path": "concepts/listener-vs-proactive.md",
      "webPath": "/concepts/listener-vs-proactive",
      "prerequisites": [],
      "related": [
        "service-shell"
      ],
      "packIds": [
        "concept/listener-vs-proactive"
      ]
    },
    {
      "id": "pause-vs-stop",
      "type": "concept",
      "title": "Pause vs stop",
      "summary": "Pause suspends work while the process keeps running; stop exits the process entirely.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "lifecycle",
        "cli"
      ],
      "goals": [],
      "path": "concepts/pause-vs-stop.md",
      "webPath": "/concepts/pause-vs-stop",
      "prerequisites": [],
      "related": [
        "service-shell"
      ],
      "packIds": [
        "concept/pause-vs-stop"
      ]
    },
    {
      "id": "service-discovery",
      "type": "concept",
      "title": "Service discovery via package.json",
      "summary": "Servix finds a service entry through the servix.entry field in package.json, so any compatible npm package is installable by name.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "packaging",
        "npm"
      ],
      "goals": [],
      "path": "concepts/service-discovery.md",
      "webPath": "/concepts/service-discovery",
      "prerequisites": [],
      "related": [
        "wrap-once-run-managed"
      ],
      "packIds": [
        "concept/service-discovery"
      ]
    },
    {
      "id": "service-shell",
      "type": "concept",
      "title": "The service shell",
      "summary": "Servix is the lifecycle shell around your logic — it supervises, schedules, logs, and persists, but never becomes the business logic.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "architecture",
        "start-here"
      ],
      "goals": [],
      "path": "concepts/service-shell.md",
      "webPath": "/concepts/service-shell",
      "prerequisites": [],
      "related": [
        "wrap-once-run-managed",
        "listener-vs-proactive"
      ],
      "packIds": [
        "concept/service-shell"
      ]
    },
    {
      "id": "wrap-once-run-managed",
      "type": "concept",
      "title": "Wrap once, run managed",
      "summary": "You wrap existing logic exactly once with defineServixService; from then on it behaves like an installable, controllable service.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "wrapping"
      ],
      "goals": [],
      "path": "concepts/wrap-once-run-managed.md",
      "webPath": "/concepts/wrap-once-run-managed",
      "prerequisites": [],
      "related": [
        "service-shell",
        "service-discovery"
      ],
      "packIds": [
        "concept/wrap-once-run-managed"
      ]
    },
    {
      "id": "install-and-run",
      "type": "guide",
      "title": "Install and run a service",
      "summary": "Install the servix CLI, install a service by package name or path, and drive it through its lifecycle.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "cli",
        "lifecycle",
        "getting-started"
      ],
      "goals": [],
      "path": "guides/install-and-run.md",
      "webPath": "/guides/install-and-run",
      "prerequisites": [
        "service-discovery"
      ],
      "related": [
        "wrap-a-function",
        "wrap-a-listener"
      ],
      "packIds": [
        "guide/install-and-run"
      ]
    },
    {
      "id": "wrap-a-cli-command",
      "type": "guide",
      "title": "Wrap a CLI command",
      "summary": "Run an existing CLI command as a supervised recurring job using ctx.exec, without rewriting its logic.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "wrapping",
        "cli"
      ],
      "goals": [],
      "path": "guides/wrap-a-cli-command.md",
      "webPath": "/guides/wrap-a-cli-command",
      "prerequisites": [
        "service-shell"
      ],
      "related": [
        "wrap-a-function"
      ],
      "packIds": [
        "guide/wrap-a-cli-command"
      ]
    },
    {
      "id": "wrap-a-function",
      "type": "guide",
      "title": "Wrap an existing function",
      "summary": "Turn a TypeScript function into a scheduled managed service with one defineServixService call.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "wrapping",
        "proactive"
      ],
      "goals": [],
      "path": "guides/wrap-a-function.md",
      "webPath": "/guides/wrap-a-function",
      "prerequisites": [
        "service-shell"
      ],
      "related": [
        "wrap-a-cli-command",
        "wrap-a-listener"
      ],
      "packIds": [
        "guide/wrap-a-function"
      ]
    },
    {
      "id": "wrap-a-listener",
      "type": "guide",
      "title": "Wrap a webhook listener",
      "summary": "Keep an HTTP webhook handler alive as a managed listener worker with routes on the managed HTTP context.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "wrapping",
        "listener"
      ],
      "goals": [],
      "path": "guides/wrap-a-listener.md",
      "webPath": "/guides/wrap-a-listener",
      "prerequisites": [
        "listener-vs-proactive"
      ],
      "related": [
        "wrap-a-function"
      ],
      "packIds": [
        "guide/wrap-a-listener"
      ]
    },
    {
      "id": "choose-worker-type",
      "type": "scenario",
      "title": "Choose the right worker type",
      "summary": "Decide between a listener worker and a proactive worker for the logic you are wrapping.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "workers",
        "wrapping"
      ],
      "goals": [
        "Does the work react to external events, or does it run on a clock?"
      ],
      "path": "scenarios/choose-worker-type.md",
      "webPath": "/scenarios/choose-worker-type",
      "prerequisites": [],
      "related": [
        "listener-vs-proactive"
      ],
      "packIds": [
        "scenario/choose-worker-type"
      ]
    },
    {
      "id": "orient-servix",
      "type": "use-case",
      "title": "Orient on Servix",
      "summary": "You can explain the wrapper flow: existing logic → Servix wrapper → managed service.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "start-here",
        "overview"
      ],
      "goals": [
        "Understand the service-shell model and what Servix does and does not own."
      ],
      "path": "use-cases/orient-servix.md",
      "webPath": "/use-cases#orient-servix",
      "prerequisites": [],
      "related": [
        "04-getting-started"
      ],
      "packIds": [
        "use-case/orient-servix"
      ]
    },
    {
      "id": "wrap-existing-function",
      "type": "use-case",
      "title": "Wrap an existing function",
      "summary": "Turn a TypeScript function you already have into a scheduled managed service.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "wrapping",
        "proactive"
      ],
      "goals": [
        "Turn a TypeScript function you already have into a scheduled managed service."
      ],
      "path": "use-cases/wrap-existing-function.md",
      "webPath": "/use-cases#wrap-existing-function",
      "prerequisites": [],
      "related": [
        "03-workers-and-runtime"
      ],
      "packIds": [
        "use-case/wrap-existing-function"
      ]
    },
    {
      "id": "wrap-cli-command",
      "type": "use-case",
      "title": "Wrap a CLI command",
      "summary": "Run an existing CLI command as a supervised recurring job with ctx.exec.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "wrapping",
        "cli"
      ],
      "goals": [
        "Run an existing CLI command as a supervised recurring job with ctx.exec."
      ],
      "path": "use-cases/wrap-cli-command.md",
      "webPath": "/use-cases#wrap-cli-command",
      "prerequisites": [],
      "related": [
        "02-cli-lifecycle"
      ],
      "packIds": [
        "use-case/wrap-cli-command"
      ]
    },
    {
      "id": "wrap-listener",
      "type": "use-case",
      "title": "Wrap a webhook listener",
      "summary": "Keep an HTTP webhook handler alive as a managed listener worker.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "wrapping",
        "listener"
      ],
      "goals": [
        "Keep an HTTP webhook handler alive as a managed listener worker."
      ],
      "path": "use-cases/wrap-listener.md",
      "webPath": "/use-cases#wrap-listener",
      "prerequisites": [],
      "related": [
        "04-getting-started"
      ],
      "packIds": [
        "use-case/wrap-listener"
      ]
    },
    {
      "id": "run-lifecycle-cli",
      "type": "use-case",
      "title": "Operate services from the CLI",
      "summary": "Install, start, pause, resume, stop, and inspect services with the servix CLI.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "cli",
        "lifecycle"
      ],
      "goals": [
        "Install, start, pause, resume, stop, and inspect services with the servix CLI."
      ],
      "path": "use-cases/run-lifecycle-cli.md",
      "webPath": "/use-cases#run-lifecycle-cli",
      "prerequisites": [],
      "related": [
        "00-overview"
      ],
      "packIds": [
        "use-case/run-lifecycle-cli"
      ]
    },
    {
      "id": "ship-service-package",
      "type": "use-case",
      "title": "Ship a service as an npm package",
      "summary": "Publish a wrapped service so anyone can servix install it.",
      "aliases": [],
      "audiences": [
        "developers"
      ],
      "tags": [
        "packaging",
        "npm"
      ],
      "goals": [
        "Publish a wrapped service so anyone can servix install it."
      ],
      "path": "use-cases/ship-service-package.md",
      "webPath": "/use-cases#ship-service-package",
      "prerequisites": [],
      "related": [
        "03-workers-and-runtime"
      ],
      "packIds": [
        "use-case/ship-service-package"
      ]
    },
    {
      "id": "00-overview",
      "type": "book",
      "title": "Overview",
      "summary": "What Servix is, the service-shell mental model, and what kinds of existing logic you can wrap.",
      "aliases": [
        "CASE FILE · SVX-00"
      ],
      "audiences": [
        "developers"
      ],
      "tags": [
        "overview",
        "start-here"
      ],
      "goals": [],
      "path": "books/00-overview/",
      "webPath": "/books/00-overview",
      "prerequisites": [],
      "related": [],
      "packIds": []
    },
    {
      "id": "01-wrapping-existing-code",
      "type": "book",
      "title": "Wrapping Existing Code",
      "summary": "Wrap a TypeScript function, a CLI command, a webhook listener, or an API poller into a Servix service definition.",
      "aliases": [
        "CASE FILE · SVX-01"
      ],
      "audiences": [
        "developers"
      ],
      "tags": [
        "wrapping",
        "defineServixService"
      ],
      "goals": [],
      "path": "books/01-wrapping-existing-code/",
      "webPath": "/books/01-wrapping-existing-code",
      "prerequisites": [],
      "related": [],
      "packIds": []
    },
    {
      "id": "02-cli-lifecycle",
      "type": "book",
      "title": "CLI & Lifecycle",
      "summary": "Every servix CLI command, lifecycle semantics, pause vs stop, configuration, and the on-disk data directories.",
      "aliases": [
        "CASE FILE · SVX-02"
      ],
      "audiences": [
        "developers"
      ],
      "tags": [
        "cli",
        "lifecycle"
      ],
      "goals": [],
      "path": "books/02-cli-lifecycle/",
      "webPath": "/books/02-cli-lifecycle",
      "prerequisites": [],
      "related": [],
      "packIds": []
    },
    {
      "id": "03-workers-and-runtime",
      "type": "book",
      "title": "Workers & Runtime",
      "summary": "Listener vs proactive workers, the ServiceContext each worker receives, service discovery, and the runtime architecture.",
      "aliases": [
        "CASE FILE · SVX-03"
      ],
      "audiences": [
        "developers"
      ],
      "tags": [
        "workers",
        "runtime",
        "context"
      ],
      "goals": [],
      "path": "books/03-workers-and-runtime/",
      "webPath": "/books/03-workers-and-runtime",
      "prerequisites": [],
      "related": [],
      "packIds": []
    },
    {
      "id": "04-getting-started",
      "type": "book",
      "title": "Getting Started",
      "summary": "Install Servix, run the example webhook listener, write your first service, and ship it as an npm package.",
      "aliases": [
        "CASE FILE · SVX-04"
      ],
      "audiences": [
        "developers"
      ],
      "tags": [
        "getting-started",
        "tutorial"
      ],
      "goals": [],
      "path": "books/04-getting-started/",
      "webPath": "/books/04-getting-started",
      "prerequisites": [],
      "related": [],
      "packIds": []
    }
  ]
}