Governed cryptographic identity for machines across AI, payments, Web3, and other critical operations with configurable risk model based on threshold cryptography.
See the code
Website · Documentation · OpenAPI · Java SDK
TKeeper provides cryptographic identities for AI agents, services, and other non-human actors. Each identity combines:
As agents move from proposing actions to moving funds and changing production systems, applications need verifiable authorization for each action. TKeeper checks the identity's manifest and controls, then signs the approved action. The receiving system verifies that signature before executing it. Teams use this boundary to build and secure agent tools and payments, digital asset applications, PKI, and internal automation.
POST /v2/keeper/sign returns a signature.
POST /v2/keeper/compose runs the same checks and can return a signed transaction, payment credential or any other "composed" artifact. Signing and Authorities explains the request and policy model.
Raw arbitrary signing has no intent policy and is disabled by default.
| Work | Guide |
|---|---|
| Agent tools over MCP; AP2 and Mastercard Verifiable Intent payments | MCP action · AP2 · MC Intent |
| Bitcoin, EVM, Tron, XRP, and Solana transactions | For Digital Assets · Chain authorities |
| X.509 certificate signing | For PKI · X.509 example |
| Typed commands for internal systems | For Other Activities · Custom authorities |
TKeeper supports mono and threshold operating modes. In mono, one host holds the full key material; compromising that host compromises the identity.
In threshold mode, TKeeper uses multi-party computation (MPC) for operations. Each peer holds one key share and checks the operation before contributing. A signature needs t accepted contributions from n peers. Normal threshold signing does not reconstruct the private key.
For a 2-of-3 identity, one compromised peer cannot sign alone or recover the key from its share. One unavailable peer leaves two that can still sign. The protection boundary ends at two compromised peers, and signing stops if fewer than two healthy peers can participate.
Place peers across separate hosts and failure domains to distribute compromise risk. Honest peers with matching authority and policy state reject actions that violate those rules, even if a minority peer is compromised. Keys created with distributed key generation never exist whole on one peer; imported or promoted keys may have existed whole earlier. See Quorum Modes and the Threat Model.
Follow Local Single Node to try TKeeper. A default production build requires Java 25:
./gradlew :build -Pkeeper.features=all -Pkeeper.platforms=all
all includes default production features. MCP, developer authentication, policy dry run, and recovery require explicit selectors. See Build and Features before building a smaller artifact.
To package native libraries for one OS/CPU instead of all bundled variants, add -Ptarget=linux-amd64 (or another supported target). The default -Ptarget=all keeps all bundled variants.
Use the Java SDK or OpenAPI to integrate. For production boundaries, read the Threat Model and Status and Limitations.
Run the full release checks with ./gradlew releaseGate. See Integration Tests for the Docker-backed suite.
Apache License 2.0. See LICENSE.md.
345 commits
Kotlin
83.3%
JavaScript
6.6%
Java
5.2%
HTML
3.0%
CSS
1.6%
Governed cryptographic identity for machines across AI, payments, Web3, and other critical operations with configurable risk model based on threshold cryptography.
See the code
Website · Documentation · OpenAPI · Java SDK
TKeeper provides cryptographic identities for AI agents, services, and other non-human actors. Each identity combines:
As agents move from proposing actions to moving funds and changing production systems, applications need verifiable authorization for each action. TKeeper checks the identity's manifest and controls, then signs the approved action. The receiving system verifies that signature before executing it. Teams use this boundary to build and secure agent tools and payments, digital asset applications, PKI, and internal automation.
POST /v2/keeper/sign returns a signature.
POST /v2/keeper/compose runs the same checks and can return a signed transaction, payment credential or any other "composed" artifact. Signing and Authorities explains the request and policy model.
Raw arbitrary signing has no intent policy and is disabled by default.
| Work | Guide |
|---|---|
| Agent tools over MCP; AP2 and Mastercard Verifiable Intent payments | MCP action · AP2 · MC Intent |
| Bitcoin, EVM, Tron, XRP, and Solana transactions | For Digital Assets · Chain authorities |
| X.509 certificate signing | For PKI · X.509 example |
| Typed commands for internal systems | For Other Activities · Custom authorities |
TKeeper supports mono and threshold operating modes. In mono, one host holds the full key material; compromising that host compromises the identity.
In threshold mode, TKeeper uses multi-party computation (MPC) for operations. Each peer holds one key share and checks the operation before contributing. A signature needs t accepted contributions from n peers. Normal threshold signing does not reconstruct the private key.
For a 2-of-3 identity, one compromised peer cannot sign alone or recover the key from its share. One unavailable peer leaves two that can still sign. The protection boundary ends at two compromised peers, and signing stops if fewer than two healthy peers can participate.
Place peers across separate hosts and failure domains to distribute compromise risk. Honest peers with matching authority and policy state reject actions that violate those rules, even if a minority peer is compromised. Keys created with distributed key generation never exist whole on one peer; imported or promoted keys may have existed whole earlier. See Quorum Modes and the Threat Model.
Follow Local Single Node to try TKeeper. A default production build requires Java 25:
./gradlew :build -Pkeeper.features=all -Pkeeper.platforms=all
all includes default production features. MCP, developer authentication, policy dry run, and recovery require explicit selectors. See Build and Features before building a smaller artifact.
To package native libraries for one OS/CPU instead of all bundled variants, add -Ptarget=linux-amd64 (or another supported target). The default -Ptarget=all keeps all bundled variants.
Use the Java SDK or OpenAPI to integrate. For production boundaries, read the Threat Model and Status and Limitations.
Run the full release checks with ./gradlew releaseGate. See Integration Tests for the Docker-backed suite.
Apache License 2.0. See LICENSE.md.
345 commits
Kotlin
83.3%
JavaScript
6.6%
Java
5.2%
HTML
3.0%
CSS
1.6%