Developer Guide

Co-Signer Setup Guide

This guide will walk you through setting up and running the Utila Co-Signer.

Prerequisites

Before running the co-signer, you must have:

  • A registered device.
  • Downloaded key shares.

If you don’t have these set up yet, follow the Device and Key Shares Setup Guide

Run the Co-Signer

The co-signer can be run in two modes:

  • Sign all transactions, which automatically signs all transactions designated to the service account
  • Webhook, which signs transactions designated to the service account, based on a user-supplied webhook.

Run in “Sign All Transactions” Mode

To run the co-signer in its simplest form, which signs all relevant transactions automatically, run the following command:

./utilacli cosigner run --vault-id <vault-id> --device-id <device-id> --sign-all-txs

Run in Webhook Mode

To give your own service control over which transactions to sign, use the --webhook-url flag. Each transaction awaiting signature will be sent to your webhook. The co-signer will then act based on the webhook’s response.

⚠️

Don't confuse the co-signer webhook with the event webhooks, which are configured using the console.


Webhook Input

The webhook receives the transaction object, as defined in the GetTransaction response.


Webhook Output

The webhook must respond with:

  • HTTP 200 OK status code.
  • JSON containing a boolean field signTransaction.

Example:

{
  "signTransaction": true
}

If true, the co-signer signs the transaction. If false, it cancels it.