Writes a memory. Agents write candidates only; a candidate becomes confirmed through a second observer, CI evidence or a person (overlane memory confirm). A person may pass –confirmed for their own statement. Text that contains a secret or personal data is refused and never stored. Write team memory by promoting a project memory (overlane memory promote); global memory is written only by the curator.
Usage
overlane memory add text... [--service URL] [--team TENANT_ID] --title TEXT [--scope project|team|user] [--project PROJECT_ID] [--category fact|decision|event|procedure|preference] [--confirmed] [--dry-run]Arguments
| Argument | Required | Description |
|---|---|---|
text... |
yes | What to remember |
Flags
| Flag | Type | Required | Default | Description |
|---|---|---|---|---|
--service |
string | no | The service address (default: OVERLANE_SERVICE_URL, then the project’s binding, then the hosted service) | |
--team |
string | no | The team (tenant) to act on (default: the one your token belongs to) | |
--title |
string | yes | A short title (memories with the same title in different scopes are compared) | |
--scope |
one of project, team, user |
no | project |
Where the memory lives |
--project |
string | no | The project, for project scope | |
--category |
one of fact, decision, event, procedure, preference |
no | fact |
What kind of memory this is |
--confirmed |
boolean | no | Store as confirmed (a person’s own statement; an agent writes a candidate and a second observer confirms it) | |
--dry-run |
boolean | no | Print the requests and file changes this command would make, then stop. Needs no credentials. |
Examples
overlane memory add --title "Deploy day" "Deploys go out on Tuesdays" --project prj_1
overlane memory add --title "Editor" --scope user "I prefer a dark theme" --dry-runBehavior
- Effect:
write(changes local or hosted state). - Needs credentials: yes. Uses the network: yes.
- Supports
--dry-run: yes. Accepts--force: no. - Machine-readable description:
overlane schema memory add.
Result
With --json (the default when stdout is not a terminal) the command prints this JSON Schema’s shape on stdout.
{
"anyOf": [
{
"type": "object",
"properties": {
"tenantId": {
"type": "string"
},
"item": {
"type": "object",
"properties": {
"tenantId": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
"description": "tenant identifier"
},
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$"
},
"scope": {
"type": "string",
"enum": [
"project",
"team",
"user",
"global"
]
},
"scopeId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"projectId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
"description": "project identifier"
},
{
"type": "null"
}
]
},
"userId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 128
},
{
"type": "null"
}
]
},
"category": {
"type": "string",
"enum": [
"fact",
"decision",
"event",
"procedure",
"preference"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"body": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"candidate",
"confirmed",
"superseded",
"expired"
]
},
"provenance": {
"type": "object",
"properties": {
"observer": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"observerKind": {
"type": "string",
"enum": [
"user",
"agent",
"ci",
"curator"
]
},
"observedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"revision": {
"anyOf": [
{
"type": "string",
"pattern": "^(?:[0-9a-f]{40}|[0-9a-f]{64})$"
},
{
"type": "null"
}
]
}
},
"required": [
"observer",
"observerKind",
"observedAt",
"revision"
],
"additionalProperties": false
},
"symbolLinks": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"symbol": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"path",
"symbol"
],
"additionalProperties": false
}
},
"derivedFrom": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$"
}
},
"supersedes": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$"
},
{
"type": "null"
}
]
},
"stale": {
"type": "boolean"
},
"staleReason": {
"anyOf": [
{
"type": "string",
"maxLength": 300
},
{
"type": "null"
}
]
},
"confirmation": {
"anyOf": [
{
"type": "object",
"properties": {
"basis": {
"anyOf": [
{
"type": "string",
"enum": [
"second_observer",
"ci_evidence",
"human"
]
},
{
"type": "string",
"const": "curator"
},
{
"type": "string",
"const": "checker"
}
]
},
"by": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"evidenceRef": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 300
},
{
"type": "null"
}
]
}
},
"required": [
"basis",
"by",
"at",
"evidenceRef"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"heldReason": {
"default": null,
"anyOf": [
{
"type": "string",
"maxLength": 400
},
{
"type": "null"
}
]
},
"observationCount": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"updatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
},
"required": [
"tenantId",
"id",
"scope",
"scopeId",
"projectId",
"userId",
"category",
"title",
"body",
"status",
"provenance",
"symbolLinks",
"derivedFrom",
"supersedes",
"stale",
"staleReason",
"confirmation",
"heldReason",
"observationCount",
"createdAt",
"updatedAt"
],
"additionalProperties": false
},
"duplicate": {
"type": "boolean"
},
"repeatObservation": {
"type": "boolean"
}
},
"required": [
"tenantId",
"item",
"duplicate",
"repeatObservation"
],
"additionalProperties": {}
},
{
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"const": true
},
"service": {
"type": "string"
},
"requests": {
"type": "array",
"items": {
"type": "object",
"properties": {
"method": {
"type": "string"
},
"path": {
"type": "string"
},
"body": {},
"note": {
"type": "string"
}
},
"required": [
"method",
"path"
],
"additionalProperties": false
}
},
"commands": {
"type": "array",
"items": {
"type": "string"
}
},
"writes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"write",
"append",
"delete"
]
},
"description": {
"type": "string"
}
},
"required": [
"path",
"action",
"description"
],
"additionalProperties": false
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"dryRun",
"requests",
"commands",
"writes",
"notes"
],
"additionalProperties": false
}
]
}See exit codes for the status the process returns.