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.