Redouble AI Nucleo documentation
Part 13 · Inside the runtime

Inside the Bedrock provider

ai.redouble.nucleo.providers.bedrock · nucleo-provider-bedrock

This page is for people working on the runtime itself. What the provider connects to, the credentials it needs and what it serves are in the guide; this page holds its encoders, its transport and the detail of its account listings.

Encoders

How the parts of a Nucleo message become Converse's native shapes (B = software.amazon.awssdk.services.bedrockruntime.model.ContentBlock); the encoder model they follow is the parent How each part of a message reaches a provider.

ClassRole
BedrockTextWrapperThe one Bedrock text wrap: string -> ContentBlock.text. Injected into the shared text encoders.
BedrockImageBlockEncoderNative ContentBlock.image carrying the decoded bytes.
BedrockFileBlockEncoderA file as the file itself: a document type Converse reads (PDF, Word, Excel, CSV, HTML, text, Markdown) as a native ContentBlock.document with the decoded bytes and the file name reduced to the characters Converse accepts in a document name, an image file as a native ContentBlock.image; any other type produces nothing (BedrockFileBlockEncoderTest).

Every other block type (tool-use, tool-result, JSON, skill) has no Converse native form and rides the base text encoders, so a Bedrock request carries them as text rather than dropping them.

Transport

The runtime client (BedrockClients.newRuntimeClient) runs on the AWS SDK's own Apache transport, sized to the framework's HTTP pool (HttpSettings.poolSize) and timed like the framework's transport: 30 seconds to connect, 15 minutes for a response (HttpConnectionPools.CONNECT_TIMEOUT_SECONDS, RESPONSE_TIMEOUT_MINUTES), because a Converse call is silent until its whole answer is written and the SDK's default 30-second socket timeout cuts off any answer that takes longer.

Catalog and discovery

The artifact ships META-INF/nucleo/seed_models.json, the fragment with a bootstrap kernel of its two surfaces' entries (Converse, Cohere embeddings) with AWS's published default quotas, loaded when the deployment has no catalog of its own; the add-on's fragment carries the Anthropic-on-Bedrock and Mantle entries, and the discovery authors the rest. Every Bedrock provider, the base's two and the add-on's two, shares BedrockProvider, which answers "configured" as a region and an identity both resolving, from the deployment's store records (aws-access-key-id as a whole pair, aws-region) or from AWS's own default chains (the standard variables, a profile, the process's role), reports the resolved region as its connectionFacts() (Bedrock is regional and the catalog's us./global. profile ids resolve against the region's endpoint, so a wrong region fails every call with a 400 that names neither the region nor the model - the fact is how a status page shows it before the first call), and each implements ModelDiscovery through BedrockDiscovery:

This is why the artifact depends on the bedrock control-plane and servicequotas SDK clients beside bedrockruntime.

^