# Edge Local Quickstart

이 문서는 `toki-labs.com` Control Plane에 native Edge를 붙이고, Ollama Node를 연결해 OpenAI-compatible smoke까지 확인하는 최소 절차다.

설정 기준은 `edge.yaml`이다. 주소는 환경 변수로 흩뿌리지 않는다.

## 1. Package

현재 `toki-labs.com` 원격처럼 Apple Silicon macOS에서 실행한다.

```bash
make build
```

## 2. Edge 설정

```bash
rm -rf "$HOME/iop-edge-test"
mkdir -p "$HOME/iop-edge-test"
tar -xzf build/packages/iop-edge-darwin-arm64.tar.gz -C "$HOME/iop-edge-test"
cd "$HOME/iop-edge-test/iop-edge-darwin-arm64"
./iop-edge config init
```

`edge.yaml`에서 아래 값만 맞춘다. 모델만 필요하면 바꾼다.

```yaml
edge:
  id: "edge-toki-labs"
  name: "Toki Labs Edge"

server:
  listen: "0.0.0.0:19090"
  advertise_host: "toki-labs.com"

bootstrap:
  listen: "0.0.0.0:18080"
  artifact_base_url: "http://toki-labs.com:18080"
  artifact_dir: "artifacts"

control_plane:
  enabled: true
  wire_addr: "toki-labs.com:19081"

openai:
  enabled: true
  listen: "0.0.0.0:18081"
  adapter: "ollama"
  target: "gemma4:26b"
  models:
    - "gemma4:26b"
  timeout_sec: 300

nodes: []
```

확인:

```bash
./iop-edge --config edge.yaml env
./iop-edge --config edge.yaml config check
```

## 3. Node 등록

```bash
./iop-edge --config edge.yaml node register node-ollama-1 \
  --adapter ollama \
  --ollama-base-url http://127.0.0.1:11434
```

출력된 `curl -fsSL ... | bash -s <token>` 명령을 보관한다.

## 4. Edge 실행

```bash
mkdir -p logs run
nohup ./iop-edge --config edge.yaml serve > logs/edge.stdout.log 2>&1 &
echo $! > run/iop-edge.pid
```

확인:

```bash
curl -fsS http://toki-labs.com:18000/edges
```

## 5. Node 실행

3단계에서 출력된 bootstrap 명령을 Node host에서 실행한다.

```bash
curl -fsSL http://toki-labs.com:18080/bootstrap/node.sh | bash -s <token>
```

Node 연결 확인:

```bash
curl -fsS http://toki-labs.com:18000/edges/edge-toki-labs/status
```

## 6. Smoke

```bash
curl -fsS http://toki-labs.com:18081/v1/models

./iop-edge --config edge.yaml smoke openai \
  --model gemma4:26b \
  --base-url http://toki-labs.com:18081 \
  --timeout 60s
```

외부 OpenAI-compatible client base URL:

```text
http://toki-labs.com:18081/v1
```
