durmem keeps your agents on track.

Manage stores

Create, inspect, recover, or remove stores in the web app or CLI.

A store is one separate memory on your durmem server. This computer reaches it through a named section in ~/.loom/stores.toml, and its domain (for example CodingDomain for project memory or LogDomain for a Kanban board) decides how its memory is organized and answered.

Your first stores come from setup or login; see Install and set up. Hosted accounts start with three: coding, the practice store loom_demo and the board kanban. Creating another store requires an existing store credential from the same server. If you have several configured sections, auth_store names which section supplies that credential; when omitted, durmem uses the first section in file order with an endpoint, not the top-level default. Hosted storage and store limits are described in Your durmem account; the administrator sets private-server limits.

For hands-on practice with multiple stores, see Tutorial 02. It uses a disposable store; use this page for account and recovery details.

In the web app, sign in at your server's /stores page, https://durmem.ai/stores. Stores lists your stores and connection settings. View browses contents and types. Manage handles creation, domain changes, and deletion. Tutorials are on the same server at /tutorials. On a shared computer, sign out and close the browser when finished.

List and inspect stores#

durmem list_stores

This shows locally configured stores and their descriptions. It does not prove that a store still exists on the server. In the web app, use Stores to inspect server status or View to browse data and types.

For a store's description, namespaces, types and fact counts:

durmem describe_store --params '{"store":"coding"}'

Its reported server version is informational, not proof of the running binary or a minimum supported version.

Create a store#

In Manage, supply a name, optional usage and domain, then choose Create store. From the CLI:

durmem create_store --params '{"name":"notes","usage":"Personal notes","domain":"PersonalDomain"}'

Choose CodingDomain, PersonalDomain, ReconciliationDomain or LogDomain; use LogDomain for a Kanban board. Names are normalized to lowercase section names; an existing local section of that name is refused before creation. Success means the store is ready and its section has been written locally. After web creation, sign in on this computer to the same account and server; for a private server, run durmem login --base https://durmem.ai so the new connection is recorded against that server.

Do not repeat an uncertain creation. The CLI's 30-second request/process limit can stop it before its client-side provisioning-status poll (up to 120 seconds) finishes; the remote operation may continue asynchronously. Exit 2 is not proof creation failed: the store may still be provisioning, or it may already exist without local connection details. Keep the request ID, check Stores, and sign in to the same account and server to register an existing store instead of retrying. For a private server, use durmem login --base https://durmem.ai. A second create can spend another store slot. Exit 3 means the tool returned a non-success result; read its details and check the server if the result is pending or unconfirmed before trying again.

Log in again only to recover a locally missing section for a store the same account still owns; login does not recreate a deliberately deleted coding store while other stores remain. Keep the same server as well as the same account. For a private server, run durmem login --base https://durmem.ai. Use a remaining store or create a replacement with an available section name; for quota, naming or authentication failures, see Troubleshooting.

Change a store's domain#

In Manage, choose the store's new domain. The CLI equivalent is:

durmem set_store_domain --params '{"section":"notes","domain":"CodingDomain"}'

Success means the capture/answering discipline has changed. The CLI's 30-second request/process limit can stop it before its client-side status poll (up to 120 seconds) finishes; the remote domain change may continue asynchronously. Exit 2 at that boundary means no answer was received, not that the change failed. Check the current domain before retrying. Exit 3 means the tool returned a non-success result; read its details and check status if it reports a pending or unconfirmed outcome.

Unlock a store#

The web app has no unlock control. If a store is locked after a server restart:

durmem unlock_store --params '{"section":"notes"}'

This waits for readiness and does not expose credentials; an already unlocked store needs no recovery. The CLI's 30-second request/process limit can stop it before its client-side status poll (up to 120 seconds) finishes; the remote unlock may continue asynchronously. Exit 2 at the CLI timeout means the outcome is unconfirmed, not necessarily that the unlock failed; check the store before retrying. Exit 3 means the tool returned a non-success result; read its details and check status if it reports a pending or unconfirmed outcome. The section and credential used for the request must belong to the same server.

Log out of a store on this computer#

durmem logout --params '{"section":"notes"}'

This removes the section and credential from this computer only, without contacting the server. The store and copies of its key elsewhere remain usable. Reconnect to the same account and server with durmem login; for a private server use durmem login --base https://durmem.ai. To invalidate other copies, revoke the key instead.

Revoke a store's key#

durmem revoke --params '{"section":"notes"}'

Open the returned URL on the store's recorded server, sign in and confirm the one-store change. The CLI only starts this browser handoff: it does not revoke a key, collect an email code or confirm completion. Revocation replaces the key without deleting data. Every computer using the old key must reconnect through that server's Stores connection panel; replacement keys are delivered only there.

This requires a server that supports verified-account revocation and a connection created by signing in to that server. The connection is tied to your account, uses a key for this store, and saves the server's web address as web_origin. Older direct/legacy connections may use a server-level key instead of a store-specific key and may not include a web address, so they cannot use this browser handoff. Without a saved web address, management commands use durmem. Reconnect to the same account on the private server with durmem login --base https://durmem.ai before using its web controls; if the server does not support revocation, ask its administrator. Receiving the URL alone changes nothing. Local logout is not revocation.

Delete a store#

In Manage, choose Delete store, type its name and confirm permanent deletion. From the CLI:

durmem drop_store notes --confirm notes

This irreversibly destroys the store and its contents on the server. The confirmation must exactly repeat its section name; without it nothing is sent. This is a CLI-only verb, deliberately unavailable as an agent tool. On confirmed success, the local section is removed too. Add --json for a machine-readable result.

Do not retry an uncertain deletion. If the CLI exits 3 because the server closed the connection before answering, the outcome is unknown: the store may or may not have been deleted, and its local section is kept. Do not run the deletion again. Check Stores or ask the administrator; durmem list_stores only reads local configuration. Once deletion is confirmed, remove a leftover section with durmem logout. Change the default to a remaining section first if necessary.

Deleting the store whose key authenticates the request can make its own status check fail. This normally indicates deletion but is not proof; verify it before local cleanup. Repeating a drop on an absent store will not clean up the retained local section.

Server selection and failures#

Store-management commands use the server recorded for the target section in stores.toml. A private server's origin and account must stay paired: use the same server for the target store, the credential section and any durmem login or durmem setup recovery. In these commands, auth_store selects the existing section whose credential will authenticate the request; if omitted, durmem uses the first section in file order with an endpoint, not the top-level default. The target section and auth_store must belong to the same server. Domain changes, unlock and drop use the target section's origin; if supplied, drop_store --base must match it.

Store-management commands use the web address saved with the target connection. Older direct/legacy connections may have a service endpoint but no saved web address; without it, management operations use durmem. Do not use such a connection to manage a private-server store until you reconnect to that same private server with durmem login --base https://durmem.ai. A dead first credential section can also prevent management operations. If it is no longer usable, select a live same-server section with auth_store; log out of a section only after verifying it is obsolete. Management verbs take the section or name in their parameters, not --store.

The CLI's total connection/request budget is 30 seconds. The client-side status poll for create_store, unlock_store and set_store_domain can wait up to 120 seconds, so the CLI may exit 2 before polling finishes; the remote operation may continue asynchronously. A timeout means no answer arrived; it does not prove the operation failed. Check the store or domain status before retrying. Exit 3 from these tool calls means the tool returned a non-success result; follow its details and check status if the result is pending or unconfirmed. For drop_store, exit 3 specifically means the connection closed before the result was confirmed, so the deletion outcome is unknown. Ctrl-C exits 130. See Troubleshooting for recovery.

For everyday memory, ask your connected harness or agent to save or recall facts. Kanban is optional; its landing page covers multi-agent coordination.