---
title: "Fystack Cosigner"
description: "The Fystack Cosigner is a self-hosted MPC participant. It holds one key share on your infrastructure and signs only what your policy approves."
url: https://docs.fystack.io/cosigner
last_updated: 2026-10-14
---

> ## Documentation index
> Fetch the complete documentation index at: https://docs.fystack.io/llms.txt
> Use it to discover all available pages before exploring further.

# Fystack Cosigner

The cosigner is an MPC participant you run on your own infrastructure. It holds one share of every wallet key and joins keygen and signing with Fystack's [MPCium](https://docs.fystack.io/mpcium.md) nodes. Before each signature it asks your approval server.

[Install the cosigner](https://docs.fystack.io/cosigner/installation.md)

[Architecture](https://docs.fystack.io/cosigner/architecture.md)

## Why run a cosigner

- **Shared custody**: Fystack cannot reach a signing quorum without your share.
- **Your policy, enforced locally**: Your callback server sees the raw bytes to be signed and can reject anything.
- **No inbound ports**: The cosigner dials out to Fystack over gRPC with TLS.
- **Signed releases**: Every image and binary is Sigstore-signed. `cosigner-cli` verifies and pins the digest before running.
- **Enclave isolation (coming soon)**: AWS Nitro Enclave support so host admins cannot read key shares.

## Overview

_Diagram: Cosigner in your infrastructure connects outbound to the Fystack Gateway, asks your callback for approval and unwraps its storage key with AWS KMS_

- **Your side**: the cosigner container, your approval callback, and a storage key source (password or AWS KMS).
- **Fystack side**: Apex (pairing, requests), Gateway (cosigner connections), Orchestrator (sessions) and MPCium nodes.

MPC messages are end-to-end encrypted between participants. The Gateway and Orchestrator relay them but cannot read them.

## Operations

| Operation | Cosigner role |
| --- | --- |
| Keygen | Generates its share of ECDSA (secp256k1) and EdDSA (Ed25519) keys. No one ever holds the full key. |
| Sign | Verifies the request, asks your callback, then joins threshold signing. |
| Reshare | Rotates shares to a new committee. Public key and addresses stay the same. |
| Export | Writes encrypted `.mshare` files for offline recovery. |

## Deployment modes

| Mode | Runs on | Who can read key shares |
| --- | --- | --- |
| Regular | Linux + Docker, managed by `cosigner-cli` | Anyone with root or Docker access on the host |
| Nitro Enclave (coming soon) | AWS EC2 with Nitro Enclaves | Only the attested enclave |

> **Note:** Regular mode is the supported deployment today. [Nitro Enclave](https://docs.fystack.io/cosigner/nitro-enclave.md) support is coming soon.

## Docs

- [Architecture](https://docs.fystack.io/cosigner/architecture.md): Components, channels and session lifecycle.
- [Key Lifecycle & Signing](https://docs.fystack.io/cosigner/signing-flow.md): Keygen, signing and resharing, step by step.
- [Approval Callback](https://docs.fystack.io/cosigner/approval-callback.md): Approve or reject every operation from your own server.
- [Installation](https://docs.fystack.io/cosigner/installation.md): Install, pair and start a cosigner.
- [Operations](https://docs.fystack.io/cosigner/operations.md): CLI reference, backups, updates and monitoring.
- [Nitro Enclave Deployment](https://docs.fystack.io/cosigner/nitro-enclave.md): Coming soon: run the cosigner in an AWS Nitro Enclave.
- [Security Model](https://docs.fystack.io/cosigner/security.md): Trust boundaries, encryption and verification.
