Documentation

Learn the concepts and tools behind Pod-OS

How Do I Add Data to an Evolutionary Neural Memory?

Adding data to an ENM is done by sending AIP Intents through the Pod-OS SDK. Because an ENM is an Actor, all interaction uses the standard message-passing protocol (StoreEvent, StoreBatchEvents, StoreBatchLinks, GetEvent, GetEventsForTags, and related Intents). Language clients: Go, Python, Rust, Java — see SDKs and APIs.

Connect to your gateway

Dial the TCP endpoint of whichever gateway you are permitted to use (host:62312). Set the SDK connection gateway / GatewayActorName to that gateway's FQN (from the dashboard Connection Info modal). Use a unique ClientName per connection; From must be <ClientName>@<that-gateway-FQN>.

import (
    podos "github.com/PointOfData/pod-os-go-client"
    "github.com/PointOfData/pod-os-go-client/config"
)

cfg := config.Config{
    Host:              "k8s-example-zerothlb-....elb.us-west-2.amazonaws.com",
    Port:              62312,
    GatewayActorName:  "zeroth.example.com", // gateway you dialed
    ClientName:        "my-app-" + uniqueID,   // unique per TCP connection
    EnableConcurrentMode: true,
}
client, err := podos.NewClient(ctx, cfg)

Omit user_name and passcode unless your gateway requires them. They are not your dashboard login.

Store a single event

import (
    "github.com/PointOfData/pod-os-go-client/message"
)

msg := &message.Message{
    Envelope: message.Envelope{
        To:     "Foobar@zeroth.example.com",
        From:   client.FromAddress(),
        Intent: message.IntentType.StoreEvent,
        ClientName: client.ClientName(),
    },
    NeuralMemory: &message.NeuralMemoryFields{
        Event: &message.EventFields{
            UniqueId: "person-alice",
            Type:     "Person",
        },
    },
    Payload: &message.PayloadFields{
        Data: `{"name":"Alice","email":"alice@example.com"}`,
    },
}
resp, err := client.SendMessage(ctx, msg)

Tags can be added with StoreBatchTags after the event exists, or in batch ingest flows — see Add Data examples in the repository. For StoreBatchTags on an existing event, set owner_unique_id to the target event's own Unique ID (self-ownership).

After batch writes, check per-record batch status — not just envelope OK. Use message.BatchLinksFailed(resp) / message.BatchEventsFailed(resp) in the Go SDK (equivalent helpers exist in Python, Java, and Rust).

Link two events

Use StoreBatchLinks (not a separate "edge" API):

A write uses LinkFields: unique_id_a, unique_id_b, strength_a (A toward B), and strength_b (B toward A). One store creates both ENM views. LinkEvent puts the same struct on NeuralMemory.Link. A later Get or search returns Linked, documented in Query data.

msg := &message.Message{
    Envelope: message.Envelope{
        To:         "Foobar@zeroth.example.com",
        From:       client.FromAddress(),
        Intent:     message.IntentType.StoreBatchLinks,
        ClientName: client.ClientName(),
    },
    NeuralMemory: &message.NeuralMemoryFields{
        BatchLinks: []message.BatchLinkEventSpec{{
            Link: message.LinkFields{
                UniqueId:      "link-alice-acme",
                UniqueIdA:     "person-alice",
                UniqueIdB:     "company-acme",
                Category:      "works-at",
                StrengthA:     1.0,
                StrengthB:     0.5,
                OwnerUniqueID: "person-alice",
            },
        }},
    },
}

Bulk ingest

Use StoreBatchEvents for many events in one Intent, then StoreBatchLinks for relationships. The dashboard Add Data JSONL tabs and examples/add-data show field shapes that match the SDK validation reference.

Verify with podos first

Before coding, exercise the same Intent against a live actor:

cargo install --git https://github.com/PointOfData/podos-cli --tag v0.1.0

podos store --host <gateway-host> --port 62312 \
  --connection-gateway zeroth.example.com \
  --actor Foobar@zeroth.example.com \
  --unique-id person-alice --type Person --tag name=Alice

See Testing with podos.

Testing with Direct Messaging

During development, you can use Direct Messaging in the dashboard to send Intents to your ENM without writing code — useful for verifying formats before SDK integration.


Next: How do I query data in my ENM? — retrieve and search stored events.