# Installation

## Prerequisites

- Python 3.13+
- Git
- (Optional) PostgreSQL 14+ for production
- (Optional) NVIDIA GPU + CUDA for mining

## Security First Setup

**⚠️ IMPORTANT**: AITBC has enterprise-level security hardening. After installation, immediately run:

```bash
# Run comprehensive security audit and hardening
./scripts/comprehensive-security-audit.sh

# This will fix 90+ CVEs, harden SSH, and verify smart contracts
```

**Security Status**: 🛡️ AUDITED & HARDENED  
- **0 vulnerabilities** in smart contracts (35 OpenZeppelin warnings only)
- **90 CVEs** fixed in dependencies
- **95/100 system hardening** index achieved

## Monorepo Install

```bash
git clone https://github.com/oib/AITBC.git
cd aitbc
python -m venv .venv && source .venv/bin/activate
pip install -e .
```

This installs the CLI, coordinator API, and blockchain node from the monorepo.

## Environment Configuration

### Coordinator API

Create `apps/coordinator-api/.env`:
```env
JWT_SECRET=your-secret-key
DATABASE_URL=sqlite:///./data/coordinator.db   # or postgresql://user:pass@localhost/aitbc
LOG_LEVEL=INFO
```

### Blockchain Node

Create `apps/blockchain-node/.env`:
```env
CHAIN_ID=ait-devnet
RPC_BIND_HOST=0.0.0.0
RPC_BIND_PORT=8080
MEMPOOL_BACKEND=database
```

## Systemd Services (Production)

```bash
sudo cp systemd/aitbc-*.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now aitbc-coordinator-api
sudo systemctl enable --now aitbc-blockchain-node-1
```

## Verify

```bash
systemctl status aitbc-coordinator-api
curl http://localhost:8000/v1/health
aitbc blockchain status
```

## Troubleshooting

| Problem | Fix |
|---------|-----|
| Port in use | `sudo lsof -i :8000` then `kill` the PID |
| DB corrupt | `rm -f data/coordinator.db && python -m app.storage init` |
| Module not found | Ensure venv is active: `source .venv/bin/activate` |

## Next Steps

- [3_cli.md](./3_cli.md) — CLI usage guide
- [../2_clients/1_quick-start.md](../2_clients/1_quick-start.md) — Client quick start
- [../3_miners/1_quick-start.md](../3_miners/1_quick-start.md) — Miner quick start
