Hyperlane agents - Validators and the Relayer - must be configured with private keys in order to operate. Validators use private keys to sign message checkpoints, and the Relayer uses private keys to sign transactions that deliver messages.Hyperlane agents currently support being configured with private keys in one of two ways.
Successfully created new keypair.Address: 0x32e6d32E7b1C8691Ef4ad3841003371214a0eebCPrivate Key: 0x2958f0eb2ab71bbfb5ea1422835e20e488778b61e3c107f369572e2b53b578f9
Please note that because these are generated by a website, these private keys should be considered insecure and should not be used for anything other than testing purposes!
This IAM user will be given permission to sign with the KMS key that you will later configure. Your Hyperlane agent will use this identity when signing transactions.
Go to AWS’s Identity and Access Management (IAM) in the AWS console.
On the left, under “Access management”, click “Users”.
Click the orange button “Add users”.
Pick a friendly and informative username, like hyperlane-validator-${chain_name} or hyperlane-relayer-${chain_name}. This username will be referenced in future steps, so if you choose a different username be sure to use your correct username in the future.
Click “Next”, you do not need to assign the user any permissions.
Click “Create user”.
Click into the user that you just created
Click the “Security Credentials” tab
Scroll down to “Access Keys” and click “Create Access Key”
Select “Application running outside AWS” and click “Next”
Click “Next”, no need to add a description tag
Click “Create access key”
Copy the “Access key ID” and “Secret access key” to a safe place. These will be passed to your Hyperlane Relayer as environment variables.
Go to AWS’s Key Management Service (KMS) in the AWS console.
Ensure you are in the region you want to create the key in. This can be confirmed by viewing the region at the top right of the console, or by finding the name in the URL’s subdomain (e.g. us-west-2.console.aws.amazon.com means you’re operating in the region us-west-2).
On the left, click “Customer managed keys”.
Click “Create key”.
Select the “Asymmetric” key type.
Select the “Sign and verify” key usage.
Select the ECC_SECG_P256K1 key spec.
Click “Next”.
Set the Alias to something friendly and informative, like hyperlane-validator-signer-${chain_name} or hyperlane-relayer-signer-${chain_name}
While not necessary, feel free to write a description and add any tags that you think will be useful.
Click “Next”.
A key administrator is not required, but if you want, you can select one.
Click “Next”.
Give usage permissions to the IAM user you created in section #1.
Click “Next”.
In the Review page, scroll to the “Key policy”. The generated key policy is acceptable, but you can make the access even less permissive if you wish by:
Removing the kms:DescribeKey and kms:Verify actions from the statement whose “Sid” is “Allow use of the key”
Removing the entire statement whose “Sid” is “Allow attachment of persistent resources”.
Click “Finish”
Advanced users may consider using the IAM/KMS Terraform
module instead to create
the IAM user and KMS key.
# The script at the following repo will allow you to query this address:# https://github.com/tkporter/get-aws-kms-address
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hyperlane Docs","colors":{"primary":"#7B2FBE","light":"#A855F7","dark":"#5B21B6"},"logo":{"light":"https://mintcdn.com/hyperlane/efOyQbSK6s3b_vQ3/logo/light.svg?fit=max\u0026auto=format\u0026n=efOyQbSK6s3b_vQ3\u0026q=85\u0026s=1501f37d33661a127cab46650dfaa40d","dark":"https://mintcdn.com/hyperlane/efOyQbSK6s3b_vQ3/logo/dark.svg?fit=max\u0026auto=format\u0026n=efOyQbSK6s3b_vQ3\u0026q=85\u0026s=6a75553605a617363a0c44ea88bbd01c"},"favicon":"https://mintcdn.com/hyperlane/efOyQbSK6s3b_vQ3/favicon.svg?fit=max\u0026auto=format\u0026n=efOyQbSK6s3b_vQ3\u0026q=85\u0026s=8b51aff6dfdde0fd2b8ed700bdf3ecea","footer":{"socials":{"x":"https://x.com/hyperlane","github":"https://github.com/hyperlane-xyz"},"links":[{"header":"Developers","items":[{"label":"Careers","href":"https://jobs.lever.co/Hyperlane"},{"label":"Bounties","href":"https://github.com/search?q=org%3Ahyperlane-xyz+label%3Abounty+is%3Aopen+is%3Aissue\u0026type=issues\u0026s=\u0026o=desc"},{"label":"Blog","href":"https://hyperlane.xyz/blog"}]},{"header":"Community","items":[{"label":"GitHub Discussions","href":"https://github.com/hyperlane-xyz/hyperlane-monorepo/discussions"},{"label":"Twitter","href":"https://x.com/hyperlane"}]},{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://hyperlane.xyz/privacy-policy"},{"label":"Terms of Service","href":"https://hyperlane.xyz/terms-of-service"}]}]},"seo":{"metatags":{"og:image":"/images/hero.jpg","twitter:image":"/images/hero.jpg","twitter:card":"summary_large_image"}},"integrations":{"plausible":{"domain":"docs.hyperlane.xyz"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hyperlane","hasAudioNarration":false,"actualSubdomain":"hyperlane","customDomains":["docs.hyperlane.xyz"],"gitSource":{"type":"github","owner":"hyperlane-xyz","repo":"v4-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6acce4e691989ecf9269daa5","collectionId":"85b06ba7-2af4-4e1f-8dae-e402492a3ce6","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6acce4e691989ecf9269daa5"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6acce4e691989ecf9269daa5","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"Home","count":75},{"language":"default","tag":"Learn","count":34},{"language":"default","tag":"Guides","count":32},{"language":"default","tag":"Agent Operators","count":25},{"language":"default","tag":"Protocol","count":18},{"language":"default","tag":"Overview","count":16},{"language":"default","tag":"Hyperlane Warp Routes (HWR)","count":16},{"language":"default","tag":"Relayer","count":15},{"language":"default","tag":"Applications","count":14},{"language":"default","tag":"Deployments","count":13}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"docs/operate/set-up-agent-keys","slug":"/docs/operate/set-up-agent-keys","pageMetadata":{"title":"Agent Keys","description":null,"href":"/docs/operate/set-up-agent-keys"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Tab,Tabs,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Hyperlane agents - Validators and the Relayer - must be configured with private keys in order to operate. Validators use private keys to sign `,_jsx(_components.a,{href:`/docs/resources/glossary#checkpoint`,children:`message checkpoints`}),`, and the Relayer uses private keys to sign transactions that deliver messages.`]}),`\n`,_jsx(_components.p,{children:`Hyperlane agents currently support being configured with private keys in one of two ways.`}),`\n`,_jsx(Heading,{level:`2`,id:`1-hexadecimal-keys`,children:`1. Hexadecimal keys`}),`\n`,_jsx(_components.p,{children:`A raw hexadecimal private key used for in-memory signing. This is the easiest and fastest setup.`}),`\n`,_jsx(Warning,{children:`Hexadecimal keys are less secure than AWS KMS keys.`}),`\n`,_jsx(Heading,{level:`3`,id:`generate-a-hexadecimal-key`,children:`Generate a hexadecimal key`}),`\n`,_jsx(_components.p,{children:`Keep track of your address and private key for use with your agent. Do not lose or leak it.`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Cast CLI`,id:`cast-cli`,children:[_jsxs(_components.p,{children:[`Using `,_jsx(_components.a,{href:`https://book.getfoundry.sh/cast/`,children:`Foundry’s cast`}),`, you can create a new key pair:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`cast`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` wallet`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` new`})]}),`\n`]})})}),_jsx(_components.p,{children:`The output will look something like this:`}),_jsx(CodeBlock,{numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Successfully created new keypair.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Address: 0x32e6d32E7b1C8691Ef4ad3841003371214a0eebC`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Private Key: 0x2958f0eb2ab71bbfb5ea1422835e20e488778b61e3c107f369572e2b53b578f9`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),_jsxs(Tab,{title:`Using privatekeys.pw`,id:`using-privatekeys-pw`,children:[_jsxs(_components.p,{children:[`You can visit `,_jsx(_components.a,{href:`https://privatekeys.pw/keys/ethereum/random`,children:`https://privatekeys.pw/keys/ethereum/random`}),`, which will automatically display a list of hexadecimal private keys and their addresses.`]}),_jsx(Warning,{children:_jsx(_components.p,{children:`Please note that because these are generated by a website, these private keys should be considered insecure and should not be used for anything other than testing purposes!`})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`2-aws-kms`,children:`2. AWS KMS`}),`\n`,_jsx(_components.p,{children:`A key generated by AWS and stored in a CloudHSM. This is the recommended setup for production agents.`}),`\n`,_jsx(Heading,{level:`3`,id:`create-an-iam-user`,children:`Create an IAM user`}),`\n`,_jsx(_components.p,{children:`This IAM user will be given permission to sign with the KMS key that you will later configure. Your Hyperlane agent will use this identity when signing transactions.`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to AWS’s Identity and Access Management (IAM) in the `,_jsx(_components.a,{href:`https://us-east-1.console.aws.amazon.com/iamv2/home`,children:`AWS console`}),`.`]}),`\n`,_jsx(_components.li,{children:`On the left, under “Access management”, click “Users”.`}),`\n`,_jsx(_components.li,{children:`Click the orange button “Add users”.`}),`\n`,_jsxs(_components.li,{children:[`Pick a friendly and informative username, like `,_jsx(_components.code,{children:\"hyperlane-validator-${chain_name}\"}),` or `,_jsx(_components.code,{children:\"hyperlane-relayer-${chain_name}\"}),`. This username will be referenced in future steps, so if you choose a different username be sure to use your correct username in the future.`]}),`\n`,_jsx(_components.li,{children:`Click “Next”, you do not need to assign the user any permissions.`}),`\n`,_jsx(_components.li,{children:`Click “Create user”.`}),`\n`,_jsx(_components.li,{children:`Click into the user that you just created`}),`\n`,_jsx(_components.li,{children:`Click the “Security Credentials” tab`}),`\n`,_jsx(_components.li,{children:`Scroll down to “Access Keys” and click “Create Access Key”`}),`\n`,_jsx(_components.li,{children:`Select “Application running outside AWS” and click “Next”`}),`\n`,_jsx(_components.li,{children:`Click “Next”, no need to add a description tag `}),`\n`,_jsx(_components.li,{children:`Click “Create access key”`}),`\n`,_jsx(_components.li,{children:`Copy the “Access key ID” and “Secret access key” to a safe place. These will be passed to your Hyperlane Relayer as environment variables.`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`create-a-kms-key`,children:`Create a KMS key`}),`\n`,_jsx(_components.p,{children:`This key will be used by your agent for signing.`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Go to AWS’s Key Management Service (KMS) in the AWS console.`}),`\n`,_jsxs(_components.li,{children:[`Ensure you are in the region you want to create the key in. This can be confirmed by viewing the region at the top right of the console, or by finding the name in the URL’s subdomain (e.g. `,_jsx(_components.code,{children:`us-west-2.console.aws.amazon.com`}),` means you’re operating in the region `,_jsx(_components.code,{children:`us-west-2`}),`).`]}),`\n`,_jsx(_components.li,{children:`On the left, click “Customer managed keys”.`}),`\n`,_jsx(_components.li,{children:`Click “Create key”.`}),`\n`,_jsx(_components.li,{children:`Select the “Asymmetric” key type.`}),`\n`,_jsx(_components.li,{children:`Select the “Sign and verify” key usage.`}),`\n`,_jsxs(_components.li,{children:[`Select the `,_jsx(_components.code,{children:`ECC_SECG_P256K1`}),` key spec.`]}),`\n`,_jsx(_components.li,{children:`Click “Next”.`}),`\n`,_jsxs(_components.li,{children:[`Set the Alias to something friendly and informative, like `,_jsx(_components.code,{children:\"hyperlane-validator-signer-${chain_name}\"}),` or `,_jsx(_components.code,{children:\"hyperlane-relayer-signer-${chain_name}\"})]}),`\n`,_jsx(_components.li,{children:`While not necessary, feel free to write a description and add any tags that you think will be useful.`}),`\n`,_jsx(_components.li,{children:`Click “Next”.`}),`\n`,_jsx(_components.li,{children:`A key administrator is not required, but if you want, you can select one.`}),`\n`,_jsx(_components.li,{children:`Click “Next”.`}),`\n`,_jsx(_components.li,{children:`Give usage permissions to the IAM user you created in section #1.`}),`\n`,_jsx(_components.li,{children:`Click “Next”.`}),`\n`,_jsxs(_components.li,{children:[`In the Review page, scroll to the “Key policy”. The generated key policy is acceptable, but you can make the access even less permissive if you wish by:`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Removing the `,_jsx(_components.code,{children:`kms:DescribeKey`}),` and `,_jsx(_components.code,{children:`kms:Verify`}),` actions from the statement whose “Sid” is “Allow use of the key”`]}),`\n`,_jsx(_components.li,{children:`Removing the entire statement whose “Sid” is “Allow attachment of persistent resources”.`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`Click “Finish”`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Advanced users may consider using the `,_jsx(_components.a,{href:`/docs/operate/guides/deploy-with-terraform#modules`,children:`IAM/KMS Terraform\nmodule`}),` instead to create\nthe IAM user and KMS key.`,` `]})}),`\n`,_jsx(Heading,{level:`3`,id:`query-address`,children:`Query address`}),`\n`,_jsx(_components.p,{children:`In some cases you may need to know the address associated with the KMS key you generated.`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`With cast`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`AWS_ACCESS_KEY_ID`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`redacted`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` AWS_SECRET_ACCESS_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`redacted`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` AWS_KMS_KEY_ID`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`alias/your-key-alias`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` cast`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` wallet`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` address`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --aws`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Using a script`,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# The script at the following repo will allow you to query this address:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# https://github.com/tkporter/get-aws-kms-address`})}),`\n`]})})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Agent Keys","description":null,"href":"/docs/operate/set-up-agent-keys"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Hexadecimal keys","slug":"1-hexadecimal-keys","depth":2,"children":[{"title":"Generate a hexadecimal key","slug":"generate-a-hexadecimal-key","depth":3,"children":[]}]},{"title":"2. AWS KMS","slug":"2-aws-kms","depth":2,"children":[{"title":"Create an IAM user","slug":"create-an-iam-user","depth":3,"children":[]},{"title":"Create a KMS key","slug":"create-a-kms-key","depth":3,"children":[]},{"title":"Query address","slug":"query-address","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/hyperlane/205c50ae939dcfb6/scripts/generate-all.js","/_mintlify/custom/hyperlane/94f90f9f076a1524/scripts/generate-deployments.js","/_mintlify/custom/hyperlane/24594f925ecf76e1/scripts/generate-ism-validators.js","/_mintlify/custom/hyperlane/02cfc05971294e54/scripts/generate-latencies.js","/_mintlify/custom/hyperlane/86a119bc64c138d2/scripts/registry.js","/_mintlify/custom/hyperlane/444bb374b7e460ba/scripts/generate-domains.js"],"subdomain":"hyperlane","siteName":"Hyperlane Docs","title":"Agent Keys - Hyperlane Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-07T15:58:05.282Z","originalFileLocation":"docs/operate/set-up-agent-keys.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Hyperlane Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hyperlane/b-b0rvNA5nj7cNLv/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/hyperlane/b-b0rvNA5nj7cNLv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hyperlane/b-b0rvNA5nj7cNLv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hyperlane/b-b0rvNA5nj7cNLv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hyperlane/b-b0rvNA5nj7cNLv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hyperlane/b-b0rvNA5nj7cNLv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hyperlane/b-b0rvNA5nj7cNLv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hyperlane/b-b0rvNA5nj7cNLv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hyperlane/b-b0rvNA5nj7cNLv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Agent Keys - Hyperlane Docs\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hyperlane Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hyperlane.xyz/docs/operate/set-up-agent-keys\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hyperlane.mintlify.app/images/hero.jpg\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Agent Keys - Hyperlane Docs\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hyperlane.mintlify.app/images/hero.jpg\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/hyperlane/b-b0rvNA5nj7cNLv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hyperlane Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7B2FBE\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hyperlane.xyz/docs/operate/set-up-agent-keys\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/operate/set-up-agent-keys.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.hyperlane.xyz/#organization\",\"name\":\"Hyperlane Docs\",\"url\":\"https://docs.hyperlane.xyz\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hyperlane/efOyQbSK6s3b_vQ3/logo/light.svg?fit=max\u0026auto=format\u0026n=efOyQbSK6s3b_vQ3\u0026q=85\u0026s=1501f37d33661a127cab46650dfaa40d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hyperlane.xyz#website\",\"name\":\"Hyperlane Docs\",\"url\":\"https://docs.hyperlane.xyz\",\"publisher\":{\"@id\":\"https://docs.hyperlane.xyz/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hyperlane.xyz/docs/operate/set-up-agent-keys#webpage\",\"url\":\"https://docs.hyperlane.xyz/docs/operate/set-up-agent-keys\",\"name\":\"Agent Keys\",\"dateModified\":\"2026-09-07T15:58:05.282Z\",\"isPartOf\":{\"@id\":\"https://docs.hyperlane.xyz#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hyperlane.xyz/docs/operate/set-up-agent-keys#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hyperlane.xyz/docs/operate/set-up-agent-keys#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Hyperlane Docs\",\"item\":\"https://docs.hyperlane.xyz\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agent Keys\",\"item\":\"https://docs.hyperlane.xyz/docs/operate/set-up-agent-keys\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.hyperlane.xyz/docs/operate/set-up-agent-keys#article\",\"headline\":\"Agent Keys\",\"name\":\"Agent Keys\",\"url\":\"https://docs.hyperlane.xyz/docs/operate/set-up-agent-keys\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hyperlane.xyz/docs/operate/set-up-agent-keys#webpage\"},\"image\":\"https://docs.hyperlane.xyz/images/hero.jpg\",\"dateModified\":\"2026-09-07T15:58:05.282Z\",\"publisher\":{\"@id\":\"https://docs.hyperlane.xyz/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hyperlane.xyz#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hyperlane Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hyperlane Docs","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":""}]},{"tab":"Learn","pages":[{"title":"Learn","href":"/docs/protocol/protocol-overview"}]},{"tab":"Agent Operators","groups":[{"group":"Introduction","pages":[{"title":"Agents Overview","description":null,"href":"/docs/operate/overview-agents"}]},{"group":"Key Management","pages":[{"title":"Agent Keys","href":"/docs/operate/set-up-agent-keys"}]},{"group":"Validators","pages":[{"title":"Run Validators","description":null,"href":"/docs/operate/validators/run-validators"},{"title":"AWS Signatures Bucket Setup","href":"/docs/operate/validators/validator-signatures-aws"},{"title":"Monitoring \u0026 Alerting","href":"/docs/operate/validators/monitoring-alerting"}]},{"group":"Relayer","pages":[{"title":"Run a Relayer","href":"/docs/operate/relayer/run-relayer"},{"group":"HTTP API","pages":[{"title":"Relayer HTTP API","href":"/docs/operate/relayer/api"},{"title":"Submit Transaction for Relay","api":"POST http://localhost:9090/relay","href":"/docs/operate/relayer/api/relay/post-relay"},{"title":"List Operations","api":"GET http://localhost:9090/list_operations","href":"/docs/operate/relayer/api/operations/get-operations"},{"title":"Retry Messages","api":"POST http://localhost:9090/message_retry","href":"/docs/operate/relayer/api/operations/post-message-retry"},{"title":"Reprocess Message","api":"POST http://localhost:9090/reprocess_message","href":"/docs/operate/relayer/api/operations/post-reprocess-message"},{"title":"Get Messages","api":"GET http://localhost:9090/messages","href":"/docs/operate/relayer/api/messages/get-messages"},{"title":"Insert Messages","api":"POST http://localhost:9090/messages","href":"/docs/operate/relayer/api/messages/post-messages"},{"title":"Get Merkle Tree Insertions","api":"GET http://localhost:9090/merkle_tree_insertions","href":"/docs/operate/relayer/api/merkle-tree-insertions/get-merkle-tree-insertions"},{"title":"Insert Merkle Tree Insertions","api":"POST http://localhost:9090/merkle_tree_insertions","href":"/docs/operate/relayer/api/merkle-tree-insertions/post-merkle-tree-insertions"},{"title":"List IGP Rules","api":"GET http://localhost:9090/igp_rules","href":"/docs/operate/relayer/api/igp/get-igp-rules"},{"title":"Add IGP Rule","api":"POST http://localhost:9090/igp_rules","href":"/docs/operate/relayer/api/igp/post-igp-rules"},{"title":"Remove IGP Rule","api":"DELETE http://localhost:9090/igp_rules/:index","href":"/docs/operate/relayer/api/igp/delete-igp-rules"}]},{"title":"Message Filtering","href":"/docs/operate/relayer/message-filtering"},{"title":"Monitoring \u0026 Alerting","href":"/docs/operate/relayer/monitoring-alerting"}]},{"group":"Agent Config","pages":[{"title":"Agent Configuration","href":"/docs/operate/config/agent-config"},{"title":"Configuration Reference","href":"/docs/operate/config/config-reference"}]},{"group":"Guides","pages":[{"title":"Quickstart with Docker Compose and AWS","href":"/docs/operate/guides/docker-quickstart"},{"title":"Deploy with Terraform","href":"/docs/operate/guides/deploy-with-terraform"},{"title":"AVS Operator Guide","href":"/docs/operate/guides/avs-operator-guide"}]}]}]},"title":"Agent Keys - Hyperlane Docs","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":[],"chunks":[]}