Documentation Index
Fetch the complete documentation index at: https://cowswap-mintlify-seo-audit-1777280932.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Running locally
Run the Watch Tower locally for development and testing.Basic usage
Run the Watch Tower with the default configuration:CLI commands
The Watch Tower CLI provides two main commands:run
Start the Watch Tower in monitoring mode:-
—config-path (string, default:
./config.json) Path to the chain configuration file.Environment variable:CONFIG_PATH -
—database-path (string, default:
./database) Path to the LevelDB database directory.Environment variable:DATABASE_PATH -
—log-level (string, default:
INFO) Set the logging level. Options:TRACE,DEBUG,INFO,WARN,ERROR.Environment variable:LOG_LEVEL -
—dry-run (boolean, default:
false) Run without publishing orders to the OrderBook API. Useful for testing.Environment variable:DRY_RUN -
—one-shot (boolean, default:
false) Run the Watch Tower once and exit instead of continuous monitoring.Environment variable:ONE_SHOT -
—api-port (number, default:
8080) Port for the REST API server.Environment variable:API_PORT -
—disable-api (boolean, default:
false) Disable the REST API server.Environment variable:DISABLE_API -
—silent (boolean, default:
false) Disable notifications (local logging only, no Slack alerts).Environment variable:DISABLE_NOTIFICATIONS -
—slack-webhook (string)
Slack webhook URL for error notifications.
Environment variable:
SLACK_WEBHOOK -
—only-owner (string[])
Monitor programmatic orders only from specific owner addresses (safes). Can be specified multiple times.
dump-db
Dump the database contents as JSON:Expected output
When you start the Watch Tower, you should see output similar to:What the Watch Tower does
When running, the Watch Tower continuously:- Monitors blockchain events - Listens for
ConditionalOrderCreatedandMerkleRootSetevents - Fetches programmatic orders - Retrieves order details from the blockchain
- Posts discrete orders - Submits orders to the CoW Protocol OrderBook API
- Updates registry - Maintains a local database of active programmatic orders
- Removes expired orders - Cleans up orders that have expired or been cancelled
Accessing the API server
By default, the Watch Tower starts a REST API server on port 8080 with the following endpoints:Version information
Configuration
Database dump
Prometheus metrics
Viewing logs
The Watch Tower uses a flexible logging system that can be controlled via theLOG_LEVEL environment variable.
Basic log levels
Set the global log level:TRACE, DEBUG, INFO, WARN, ERROR
Module-specific logging
Enable detailed logging for specific modules:Advanced logging patterns
Use regex patterns to match specific logger names:Running in development mode
-
Set up test configuration
Create a development configuration file for Sepolia testnet:
Edit to include only the Sepolia network with your test RPC endpoint.
-
Enable debug logging
Run with detailed logging to see all operations:
-
Use dry-run mode
Test without actually posting orders to the OrderBook API:
-
Test one-shot mode
Process current state once and exit:
Using environment variables
You can configure the Watch Tower entirely through environment variables:.env file:
Monitoring specific safes
To monitor programmatic orders from specific Safe addresses only:Stopping the Watch Tower
To gracefully stop the Watch Tower, pressCtrl+C. The Watch Tower will:
- Stop processing new blocks
- Complete any in-progress operations
- Close the API server
- Close the database connection
- Exit cleanly
Troubleshooting
Database issues
If you encounter database errors, try removing the database and resyncing:RPC connection issues
Enable debug logging to see RPC connection details:High RPC usage
Reduce RPC calls by:- Increasing
processEveryNumBlocksto skip blocks - Setting
pageSizeappropriately for your RPC provider - Using a dedicated RPC endpoint with higher rate limits