# Symbiont D

In this workflow, OpenAI Dots and similar platforms now handle conversation, information gathering, tool coordination, and ongoing work across devices; expanding a separate local general assistant offers little return.

## Metadata

- HTML: https://glenzli.com/en/projects/symbiont-d/
- Markdown: https://glenzli.com/en/projects/symbiont-d.md
- Collection: Projects
- Language: en
- Published: 2026-08-13
- Updated: 2026-09-30
- Status: archived
- Tags: conversation, local-first, external-input, long-term-context, codex

## Content

<aside className="project-retirement-notice" aria-label="Retirement notice">
  <h2>Retirement notice: Handing general assistant capabilities back to the platform</h2>
  **2026-09-30 · Project status: retired.** symbiont-d is no longer recommended for new deployments, and no new features are planned. Existing code and documentation remain available as a reference for existing deployments and migration.
  symbiont-d originally brought ordinary conversation, external input, scheduled exploration, and durable context together in a local service. In my actual workflow, dots can now handle ordinary conversation, proactive information gathering and organization, tool coordination, voice, mobile access, and ongoing tasks. I have decided to stop expanding this general-purpose assistant service.
  This retirement applies to symbiont-d. The durable knowledge, sources, and revision history managed by PCP remain worth preserving; the independent uses of PCP and infer-runtime are outside the scope of this retirement. Existing local data should be backed up and migrated as needed. This notice does not mean that existing services have been stopped or data has already been migrated.
  See [VASMC's retirement notice](/en/projects/vasmc/) and [The Half-Life of AI Scaffolding](/en/notes/half-life-of-ai-scaffolding/). The description below records the implementation before retirement.
</aside>

## Implementation before retirement

Symbiont D is a locally run conversation and information-management service. Ordinary conversation uses Codex app-server. Scheduled exploration, IMAP mail, and Google Drive can add external input to the same timeline, while Paged Context Protocol stores and retrieves durable context.

The project targeted one user on one machine. Codex remained responsible for task execution, approvals, and progress; Symbiont D handled conversation, input organization, and context transfer.

  ![Symbiont D bringing conversations, external inputs, and durable context together](/images/projects/symbiont-d-banner.webp)

## Components

```text
scheduled exploration / IMAP / Google Drive / selected Codex context
                                │
                                ▼
                          Symbiont D
             ├─ Codex app-server
             ├─ local SQLite / configuration
             ├─ PCP Runtime
             └─ Infer Runtime (optional)
```

    **Conversation**
    Streaming replies, stop, edit, retract, and resend, with transcripts stored locally.

    **External input**
    Optional read-only IMAP and Google Drive connections, scheduled exploration, and manual investigation. Sources are retained, and unpublished candidates do not enter PCP.

    **Durable context**
    Symbiont D applies its runtime policy to ordinary recording; PCP provides persistence, revisions, and retrieval.

    **Temporary discussion and voice**
    Temporary discussions are discarded by default but may retain a conclusion or transcript. Local recordings can be transcribed through optional Infer Runtime.

  ![A Symbiont D conversation and external-input view using fictional data](/images/projects/symbiont-d-conversation-briefing.svg)
  The example uses fictional data.

## Scope before retirement

The last implementation remained a development preview, and its interfaces, configuration, and local data formats could change. It targeted one user on one machine and listened on `127.0.0.1:4317` by default.

PCP Runtime and Console are installed and run separately. Mail, Drive, model services, and Infer Runtime also require their own configuration. External-input connections are read-only and report unavailable or failed state when their source cannot be reached.
