# metalware

CLI for [Metalware](https://www.metalware.com/), a firmware security analysis platform. Submit ARM Cortex-M firmware ELF binaries for automated fuzzing and security analysis, monitor results, and manage analyses from the command line.

## Installation

```bash
pip install metalware
```

Requires Python 3.10 or later.

## Quick Start

```bash
# Configure server URL and API key
metalware setup

# Submit a firmware binary for analysis
metalware submit firmware.elf

# Check status of all active analyses
metalware status
```

## CLI Reference

### `metalware setup`

Interactive setup. Prompts for server URL and API key, tests connectivity, and saves configuration to `~/.config/metalware/config.json`.

### `metalware submit <firmware.elf>`

Submit a firmware ELF binary for analysis.

| Option | Default | Description |
|---|---|---|
| `--mcu` | `cortexm` | Target MCU architecture |
| `--workers` | server default | Number of fuzzing workers |
| `--timeout` | server default | Analysis timeout (e.g. `10m`, `24h`) |
| `--tag`, `-t` | | Tag to attach (repeatable, up to 16) |

### `metalware status [analysis_id]`

Without an ID, lists active and queued analyses. With an ID, shows full detail for that analysis.

| Option | Description |
|---|---|
| `--watch`, `-w` | Poll for updates every 5 seconds |
| `--all`, `-a` | Include completed analyses |
| `--tag`, `-t` | Filter by tag |

### `metalware stop <analysis_id>`

Stop a running analysis.

### `metalware timeout <seconds>`

Set the server-wide analysis timeout. Pass `0` to disable.

## Configuration

The CLI reads from `~/.config/metalware/config.json` (written by `metalware setup`). Two environment variables override the config file:

- `METALWARE_URL` - Server URL
- `METALWARE_API_KEY` - API key

## Documentation

Full documentation is available at [metalware.com/docs](https://www.metalware.com/docs/).
