{
  "$schema": "https://ndcodex.com/schemas/object/v1.json",
  "id": "codex://object/carrier-pigeon-publishing-system",
  "archive_id": "carrier-pigeon-publishing-system",
  "slug": "carrier-pigeon-publishing-system",
  "url": "https://ndcodex.com/objects/carrier-pigeon-publishing-system/",
  "type": "codex",
  "object_form": null,
  "title": "Carrier Pigeon Publishing System",
  "summary": "Carrier Pigeon is the remote publishing system used by the ND Codex archive. It enables objects to be written, transmitted, and published directly from a phone without requiring a traditional CMS interface. Carrier…",
  "content_text": "Carrier Pigeon is the remote publishing system used by the ND Codex archive.\n\nIt enables objects to be written, transmitted, and published directly from a phone without requiring a traditional CMS interface.\n\nCarrier Pigeon converts markdown into archive objects and inserts them directly into the repository structure used by the site.\n\nThe system exists to support field publishing.\n\n---\n\nPurpose\n\nCarrier Pigeon exists to remove friction between thought and publication.\n\nThe system allows an operator to:\n\nwrite an object on a phone\n\ntransmit it to the archive\n\ngenerate a public object on ndcodex.com\n\nThis allows the archive to grow continuously from real-world observation and writing rather than requiring scheduled publishing sessions at a desktop computer.\n\n---\n\nOperational Model\n\nCarrier Pigeon acts as a lightweight ingest layer between mobile authoring and the site archive.\n\nPublishing flow:\n\nThe system accepts markdown input and converts it into ND Codex objects.\n\n---\n\nObject Routing\n\nCarrier Pigeon reads the object_type field in the frontmatter of the submitted markdown.\n\nThis field determines which archive collection receives the object.\n\nValid object types:\n\nEach object type routes to its corresponding content collection.\n\nExample mapping:\n\nRouting ensures that the archive maintains structural consistency.\n\n---\n\nInput Format\n\nCarrier Pigeon accepts markdown with frontmatter.\n\nMinimal required fields:\n\nOptional fields include:\n\nExample submission:\n\n---\n\nImage Handling\n\nCarrier Pigeon supports image attachment during submission.\n\nImage references may appear as:\n\nor\n\nDuring ingest the system rewrites local image references into public paths used by the site.\n\nImages are normalized to prevent empty or invalid entries.\n\n---\n\nSecurity Model\n\nCarrier Pigeon uses a publishing key to authenticate submissions.\n\nThe key is stored locally in the browser session on the publishing device.\n\nThe key is required for all submissions to the ingest endpoint.\n\nThis prevents unauthorized content from entering the archive.\n\n---\n\nSystem Characteristics\n\nCarrier Pigeon intentionally avoids the complexity of a traditional CMS.\n\nKey design properties:\n\nmarkdown native\n\nrepository driven\n\nschema structured\n\nphone compatible\n\nminimal interface\n\ndirect archive insertion\n\nThis allows the archive to remain transparent and durable.\n\nObjects exist as files rather than database records.\n\n---\n\nField Publishing\n\nCarrier Pigeon supports what the archive calls field publishing.\n\nField publishing means:\n\nobjects can be written and transmitted from the environments in which they are observed.\n\nExamples:\n\ndocumenting an artifact at a work table\n\nrecording a field log during system development\n\nwriting a signal while traveling\n\ncapturing fragments during conversation\n\nCarrier Pigeon enables these observations to enter the archive immediately.\n\n---\n\nRelationship to the Archive\n\nCarrier Pigeon does not replace the archive structure.\n\nIt simply provides a way to insert objects into the archive from outside the repository.\n\nThe ND Codex archive remains organized according to the object classification system defined in the Codex.\n\nCarrier Pigeon is therefore a transport mechanism, not a content system.\n\n---\n\nSystem Milestone\n\nThe first successful Carrier Pigeon transmission established the complete publishing loop from phone to archive.\n\nThis marked the transition of the ND Codex archive into a mobile-capable publishing system.\n\nFuture development will expand Carrier Pigeon while preserving its minimal architecture.\n\nThe goal is to maintain a system that is simple, durable, and usable anywhere.",
  "content_markdown": "![21C688D7 5087 43B5 BBDB EEAF2283812D](/media/pigeon/codex/carrier-pigeon-publishing-system-01.png)\n# Carrier Pigeon Publishing System\n\nCarrier Pigeon is the remote publishing system used by the ND Codex archive.\n\nIt enables objects to be written, transmitted, and published directly from a phone without requiring a traditional CMS interface.\n\nCarrier Pigeon converts markdown into archive objects and inserts them directly into the repository structure used by the site.\n\nThe system exists to support **field publishing**.\n\n---\n\n# Purpose\n\nCarrier Pigeon exists to remove friction between thought and publication.\n\nThe system allows an operator to:\n\n- write an object on a phone\n- transmit it to the archive\n- generate a public object on ndcodex.com\n\nThis allows the archive to grow continuously from real-world observation and writing rather than requiring scheduled publishing sessions at a desktop computer.\n\n---\n\n# Operational Model\n\nCarrier Pigeon acts as a lightweight ingest layer between mobile authoring and the site archive.\n\nPublishing flow:\n\n```\nPhone\n→ Carrier Pigeon interface\n→ /api/pigeon ingest endpoint\n→ markdown file written into repository\n→ Astro content collection\n→ site rebuild\n→ published archive object\n```\n\nThe system accepts markdown input and converts it into ND Codex objects.\n\n---\n\n# Object Routing\n\nCarrier Pigeon reads the `object_type` field in the frontmatter of the submitted markdown.\n\nThis field determines which archive collection receives the object.\n\nValid object types:\n\n```\nscroll\nloremap\nartifact\nfield-log\ncodex\nfragment\nnexus\nsignal\n```\n\nEach object type routes to its corresponding content collection.\n\nExample mapping:\n\n```\nscroll → src/content/scrolls/\nartifact → src/content/artifacts/\ncodex → src/content/codex/\nsignal → src/content/signals/\n```\n\nRouting ensures that the archive maintains structural consistency.\n\n---\n\n# Input Format\n\nCarrier Pigeon accepts markdown with frontmatter.\n\nMinimal required fields:\n\n```\ntitle\ndate\nobject_type\nstate\n```\n\nOptional fields include:\n\n```\ntags\nsummary\nimages\n```\n\nExample submission:\n\n```\n---\ntitle: Justice Begins as a Ripple\ndate: 2026-03-14\nobject_type: signal\nstate: published\ntags: [archive, justice]\nsummary: Initial signal marking the launch of the Carrier Pigeon publishing loop.\nimages: []\n---\n\nJustice begins as a ripple.\n```\n\n---\n\n# Image Handling\n\nCarrier Pigeon supports image attachment during submission.\n\nImage references may appear as:\n\n```\n![image](photo.jpg)\n```\n\nor\n\n```\n![[photo.jpg]]\n```\n\nDuring ingest the system rewrites local image references into public paths used by the site.\n\nImages are normalized to prevent empty or invalid entries.\n\n---\n\n# Security Model\n\nCarrier Pigeon uses a publishing key to authenticate submissions.\n\nThe key is stored locally in the browser session on the publishing device.\n\nThe key is required for all submissions to the ingest endpoint.\n\nThis prevents unauthorized content from entering the archive.\n\n---\n\n# System Characteristics\n\nCarrier Pigeon intentionally avoids the complexity of a traditional CMS.\n\nKey design properties:\n\n- markdown native\n- repository driven\n- schema structured\n- phone compatible\n- minimal interface\n- direct archive insertion\n\nThis allows the archive to remain transparent and durable.\n\nObjects exist as files rather than database records.\n\n---\n\n# Field Publishing\n\nCarrier Pigeon supports what the archive calls **field publishing**.\n\nField publishing means:\n\nobjects can be written and transmitted from the environments in which they are observed.\n\nExamples:\n\n- documenting an artifact at a work table\n- recording a field log during system development\n- writing a signal while traveling\n- capturing fragments during conversation\n\nCarrier Pigeon enables these observations to enter the archive immediately.\n\n---\n\n# Relationship to the Archive\n\nCarrier Pigeon does not replace the archive structure.\n\nIt simply provides a way to insert objects into the archive from outside the repository.\n\nThe ND Codex archive remains organized according to the object classification system defined in the Codex.\n\nCarrier Pigeon is therefore a **transport mechanism**, not a content system.\n\n---\n\n# System Milestone\n\nThe first successful Carrier Pigeon transmission established the complete publishing loop from phone to archive.\n\nThis marked the transition of the ND Codex archive into a **mobile-capable publishing system**.\n\nFuture development will expand Carrier Pigeon while preserving its minimal architecture.\n\nThe goal is to maintain a system that is simple, durable, and usable anywhere.",
  "author": {
    "id": "nathan-davis",
    "name": "Nathan Davis",
    "designation": "Archive Operator",
    "role": "Archive Operator",
    "handle": "@nathandavis",
    "avatar": "/media/people/nathan-davis.jpg",
    "bio": "Designer, builder, and curator of the Codex Archive."
  },
  "contributors": [
    {
      "id": "nathan-davis",
      "name": "Nathan Davis",
      "designation": "Archive Operator",
      "role": "Archive Operator",
      "handle": "@nathandavis",
      "avatar": "/media/people/nathan-davis.jpg",
      "bio": "Designer, builder, and curator of the Codex Archive."
    }
  ],
  "date_published": "2026-03-15T14:08:00.096Z",
  "date_modified": "2026-03-15T14:08:00.096Z",
  "status": "published",
  "visibility": "public",
  "language": "en-US",
  "axes": {
    "scale": null,
    "depth": null,
    "focus": null,
    "function": null
  },
  "themes": [
    "publishing",
    "infrastructure",
    "carrier-pigeon",
    "ingest"
  ],
  "constellations": [],
  "tags": [
    "publishing",
    "infrastructure",
    "carrier-pigeon",
    "ingest"
  ],
  "keywords": [
    "Codex",
    "publishing",
    "infrastructure",
    "carrier-pigeon",
    "ingest"
  ],
  "relations": [],
  "media": [],
  "capture": null
}