Your own model
By default, memory formation runs on the model Jennah provides, and its cost is counted in formation units. An organization on the Pro, Scale, Team, or Enterprise plan can run formation on its own model on Amazon Bedrock (for example Claude Sonnet 5.5) in an AWS account instead.
With a formation model set, every formation for your organization runs on that model, across every location, and consumes no formation units: you pay AWS for the inference.
Only the organization's root or an administrator can configure it, signed in as themselves. API keys cannot.
How Jennah reaches your model
You give Jennah no keys or credentials. Jennah assumes an IAM role you create in your AWS account using AWS STS, and the role's trust policy requires an external ID issued to your organization, so that no one else can assume the role.
Setting up Bedrock
-
Read the values to trust:
This prints the broker principal ARN to trust, the external ID issued to your organization, and the STS session name. Calling it again prints the same values.
-
Create the IAM role. The easiest way is the Jennah CloudFormation template:
preparealso prints a Launch stack link (the console's Formation model settings have the same link as a button). Following it opens the AWS CloudFormation console with the template, your external ID, and the broker principal already filled in. Review the stack, check the IAM acknowledgment, and create it. The stack'sRoleArnoutput is the role you register in step 4.The stack creates a role that trusts only the broker principal, and only with your external ID. The role is granted only
bedrock:InvokeModelon the model named by theModelIdparameter (defaultanthropic.claude-sonnet-5-5), invoked directly or through any inference profile for it. Delete the stack to revoke access. While the model is still set, formations then fail at theaccessstep and never fall back to Jennah's model; remove the model to return to Jennah's model, or recreate the stack with the same external ID.To create the role manually instead, for example with your own infrastructure tooling, use the following trust policy:
-
If you created the role by hand, attach an IAM policy that allows
bedrock:InvokeModelon the foundation model and on any inference profile for it. The CloudFormation template includes this already:{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:*::foundation-model/<model>", "arn:aws:bedrock:*:<account>:inference-profile/<profile>" ] }] }For Claude Sonnet 5.5,
<model>isanthropic.claude-sonnet-5-5and<profile>isglobal.anthropic.claude-sonnet-5-5. Enable the model in the Bedrock console for your account, in the region you will name. -
Set the model:
jnh formation-model set --provider bedrock \ --role-arn arn:aws:iam::<account>:role/<role> \ --region ap-northeast-1 \ --model global.anthropic.claude-sonnet-5-5Some models are offered only through an inference profile (with a
global.or regional prefix) rather than a bare model ID. AWS lists the inference profile IDs, with the models and regions each one covers, in Supported Regions and models for inference profiles. The CloudFormation template'sModelIdparameter takes the model ID without the prefix (anthropic.claude-sonnet-5-5);--modeltakes the profile ID (global.anthropic.claude-sonnet-5-5).
Setting checks the model first
set makes one real formation call against your model, through the same access
path and with the same settings formations use, before anything is saved. If that
call fails, nothing changes: any model you had set stays set. The error says which
step failed:
| Step | Meaning | Usual fix |
|---|---|---|
access |
The role could not be assumed | Check the trust policy and external ID |
model |
The model is not enabled, not found, or refused a setting | Enable the model in that region, check the ID, or lower --max-output-tokens |
answer |
The model answered, but not with usable structured output | Choose a model that supports structured output |
The check costs your provider one model call.
To run the same check later without changing anything, use jnh formation-model
check or Check now in the console's Formation model settings. It reports
whether the model works or which step failed, so it is the quickest way to find out
why formations are failing, or to confirm they work again after you fix the cause
(for example, after recreating a deleted CloudFormation stack).
Settings
| Flag | Default | Meaning |
|---|---|---|
--thinking |
provider default | low, medium, or high: how much the model reasons before answering |
--max-output-tokens |
32,000 | Bound on one call's output tokens, reasoning included (up to 65,536) |
Every formation makes two model calls (extraction, then reconciliation),
and reasoning is billed by your provider as output. On Claude Sonnet 5.5, the
provider default thinking level is high.
On Claude, medium has been seen to occasionally return an empty extraction.
Jennah reports that as a failed formation you can retry, rather than as a
formation that found nothing.
No fallback
With a formation model set, formation never runs on Jennah's model, even when yours cannot be reached. A formation that cannot reach your model fails, writes nothing, and names your model in the error:
| Situation | Status |
|---|---|
| Role cannot be assumed | FAILED_PRECONDITION (identifies the access step) |
| Model not found, not enabled, or refused parameters | FAILED_PRECONDITION (identifies the model and region) |
| Provider throttled or failed after retry | UNAVAILABLE (identifies the model) |
| Call took too long | DEADLINE_EXCEEDED (as on Jennah's model) |
| Call reached its output bound | ABORTED (as on Jennah's model) |
| Your plan no longer includes a formation model | FAILED_PRECONDITION (remove the model or upgrade) |
Removing the formation model is the only way back to Jennah's model:
Billing
- A formation on your model consumes 0 formation units, and its receipt
reports
formationUnits: 0. It does not count toward your allowance or overage. - Its token usage is still recorded. In token usage
grouped by model, it appears under a name like
bedrock:ap-northeast-1/global.anthropic.claude-sonnet-5-5, so you can reconcile it against your provider's bill. - The billing page shows how many formations were sent to your model this period, including any that failed there.
- Formations on your model still count toward your plan's limit on formations in progress, and the submission size limit still applies.
Where inference runs
Formation inference runs wherever your model runs. A Bedrock inference profile
with the global. prefix may run inference outside the region you name; a
regional model or profile keeps it in that region. Choose accordingly if your
conversations must stay in one region.
Quality
Jennah's formation is measured and tuned on the model Jennah provides. Another model may extract and reconcile differently: for example, it may combine several facts about one person into one fact. Check formed memory on a sample of your own conversations before relying on it.
Reading and auditing
get shows the active model, its settings, who set it and when, and the setup
values issued to your organization. It never shows a credential, because none is
stored. Every set and remove is recorded with the administrator who made it.