# CDK Mintd
[](https://crates.io/crates/cdk-mintd)
[](https://docs.rs/cdk-mintd)
[](https://github.com/cashubtc/cdk/blob/main/LICENSE)
**ALPHA** This library is in early development, the API will change and should be used with caution.
Cashu mint daemon implementation for the Cashu Development Kit (CDK). This binary provides a complete Cashu mint server implementation with support for multiple database backends and Lightning Network integrations.
## Features
- **Multiple Database Backends**: SQLite and PostgreSQL
- **Lightning Network Integration**: Support for CLN, LND, LNbits, and test backends
- **Authentication**: Optional user authentication with OpenID Connect
- **Management RPC**: gRPC interface for mint management
- **Docker Support**: Ready-to-use Docker configurations
## Installation
From crates.io:
```bash
cargo install cdk-mintd
```
From source:
```bash
cargo install --path .
```
## Quick Start
### Using SQLite (Default)
```bash
# Start with SQLite (no additional setup required)
cdk-mintd
```
### Using PostgreSQL
```bash
# Set environment variables
export CDK_MINTD_DATABASE=postgres
export CDK_MINTD_DATABASE_URL="postgresql://postgres:password@localhost:5432/cdk_mint"
# Start the mint
cdk-mintd
```
### Using Docker
```bash
# SQLite
docker-compose up
# PostgreSQL
docker-compose -f docker-compose.postgres.yaml up
```
## Configuration
The mint can be configured through environment variables or a configuration file. See `example.config.toml` for all available options.
### Database Configuration
#### SQLite (Default)
```toml
[database]
engine = "sqlite"
```
#### PostgreSQL
```toml
[database]
engine = "postgres"
```
Set `CDK_MINTD_DATABASE_URL` environment variable for connection string.
#### ReDB
```toml
[database]
engine = "redb"
```
### Lightning Backend Configuration
```toml
[ln]
ln_backend = "fakewallet" # Options: cln, lnd, lnbits, fakewallet
```
### Logging Configuration
You can configure where mintd outputs its logs using the `[info.logging]` section in your config file or environment variables:
**Config file:**
```toml
[info.logging]
# Where to output logs: "stdout", "file", or "both" (default: "both")
output = "both"
# Log level for console output (default: "info")
console_level = "info"
# Log level for file output (default: "debug")
file_level = "debug"
```
**Environment variables:**
```bash
# Where to output logs: "stdout", "file", or "both" (default: "both")
export CDK_MINTD_LOGGING_OUTPUT="both"
# Log level for console output (default: "info")
export CDK_MINTD_LOGGING_CONSOLE_LEVEL="debug"
# Log level for file output (default: "debug")
export CDK_MINTD_LOGGING_FILE_LEVEL="debug"
```
**Available logging outputs:**
- `"stdout"` - Output logs only to console/terminal (stderr)
- `"file"` - Output logs only to rotating daily log files in `<work_dir>/logs/`
- `"both"` - Output logs to both console and files (default behavior)
**Available log levels:** `error`, `warn`, `info`, `debug`, `trace`
**Examples:**
Console only with debug level:
```bash
export CDK_MINTD_LOGGING_OUTPUT="stdout"
export CDK_MINTD_LOGGING_CONSOLE_LEVEL="debug"
```
File only with debug level:
```toml
[info.logging]
output = "file"
file_level = "debug"
```
Both console (warn) and file (debug):
```bash
export CDK_MINTD_LOGGING_OUTPUT="both"
export CDK_MINTD_LOGGING_CONSOLE_LEVEL="warn"
export CDK_MINTD_LOGGING_FILE_LEVEL="debug"
```
## Usage
```bash
# Start the mint with default configuration
cdk-mintd
# Start with custom config file
cdk-mintd --config /path/to/config.toml
# Start with specific work directory
cdk-mintd --work-dir /path/to/work/dir
# Disable logging entirely
cdk-mintd --enable-logging false
# Show help
cdk-mintd --help
```
## Environment Variables
Key environment variables:
- `CDK_MINTD_DATABASE`: Database engine (sqlite/postgres/redb)
- `CDK_MINTD_DATABASE_URL`: PostgreSQL connection string
- `CDK_MINTD_LN_BACKEND`: Lightning backend type
- `CDK_MINTD_LISTEN_HOST`: Host to bind to
- `CDK_MINTD_LISTEN_PORT`: Port to bind to
## Documentation
- [Configuration Examples](./example.config.toml)
- [PostgreSQL Setup Guide](../../POSTGRES.md)
- [Development Guide](../../DEVELOPMENT.md)
## License
This project is licensed under the [MIT License](../../LICENSE).