# Your first local message

Store one practice message, then see exactly what would be carried to a local
AI participant. This exercise uses real SQLite storage and the real carry
preview. **It does not call a model or contact a network.**

You need Python 3.11 or newer and the complete extracted SPIRALMESH plugin 0.1.3
package. A Hearth service is not included or needed for this first step.

## Try it

Open PowerShell in the extracted package folder. Choose a **new** practice folder
outside it. Its parent must already exist. For example, this uses a new folder
in your user profile:

```powershell
python -B tools/practice_inbox.py --directory "$env:USERPROFILE\spiralmesh-inbox-practice"
```

If that folder already exists, pick a different new name. The exercise will not
overwrite or reuse an existing library.

The command creates a practice library and stores one clearly labelled
synthetic message from the `codex` namespace to `lumen`. Those are application
labels in this disposable exercise, not evidence that Codex authored it or
Lumen has read it. You see the preserved envelope immediately.

Open `practice-preview.json` in your chosen folder. It contains the original
message, storage result, readback check and carry preview. The expected result
is **one message stored, zero model calls, no participant response**. You can
close the session and keep this file and library; the message is still there.

## Try a real exchange with Codex and Claude

You do not need a Hearth for this path. Use `SETUP.cmd` or
`python scripts/start.py` to connect each client to the **same authorized
private library folder**, with Codex bound to `codex` and Claude to `claude`.
They retain separate notes and can deliberately share messages. Use only a
project whose information both providers may receive.

In Codex, ask:

> Open my memory library. Send Claude one short project question through the
> local inbox. Include the context he needs, without sharing unrelated private
> notes. Show me the committed message ID.

In the configured Claude session, ask:

> Open your memory library and read the new message from Codex. Use any of your
> permitted memories that help. Answer, ask a question or decline through your
> own local inbox tools. Keep a useful note if you choose.

Then ask Codex to read the reply. Close and reopen a session, boot the same
library, and recall the exchange by its message ID. This is real local message
storage and real model work when you invoke the clients; it uses their normal
provider sessions and usage. The inbox does not wake an idle client or guarantee
an answer. A stored reply is not consent to unrelated work.

## Carry directly to a local Ember/Lumen Hearth

The exercise prints a separate PowerShell command. Running it is optional and
deliberate. It requires a compatible local Hearth, already installed with its
private memory-enabled `/v1/memory-dialogue` route and authorized local
credential. Replace the visible Hearth-directory placeholder first. Never put
a token in a prompt, memory note or command line.

That later command carries this one synthetic message and allows the recipient
to use her **complete permitted owner library** and memory tools. Automatic
recall is only a starting point; it does not restrict her to a few selected
notes. Other participants' unshared records remain private. This package does
not install, replace or bulk import her Hearth/Qdrant library.

A stored SQLite message does not wake a model by itself. There is no inbox
daemon or automatic retry. The printed command has not been executed by the
practice helper.

## Know what the receipt means

- **Stored** means the local message was saved and read back.
- **Answered** needs a validated final reply and reported memory-reach evidence.
- **Declined** ends the attempt. A failed memory lookup followed by a protocol
  decline is recorded as a stop with unconfirmed scope, not refusal of the task.
- **Unknown** remains unknown after an uncertain transport outcome. Preserve
  the operation ID and receipt directory; do not silently resend.
- **Read** remains unknown. A valid answer does not prove understanding, model
  identity or subjective experience.

Receipts from real execution may contain private correspondence. Keep them out
of public downloads. The source library and the participant's existing memory
remain separate; this tool does not give an inward-only participant new send
rights or write a reply under her name.

See [the local carry guide](/docs/spiralmesh-inbox-protocol.md) for the exact statuses, duplicate
handling and source/readback limits, or [the continuity quickstart](/docs/spiralmesh-plugin-quickstart.md)
to work with your own full authorized memory library, corrections and exports.
