# Staff

AI multi-agent system simulating startup organization. Agents process tasks, create PRs, auto-complete via webhooks.

## Setup

### Requirements
- Go 1.24.4+
- GitHub token with repo admin permissions

### Install
```bash
git clone https://github.com/your-org/staff
cd staff
```

### Configure
Edit `server/config.yaml`:
```yaml
server:
  listen_address: ":9325"

github:
  token: "your_github_token"
  owner: "your_username"
  repo: "your_repo"

openai:
  api_key: "your_openai_key"
```

Or use environment variables:
```bash
export GITHUB_TOKEN="your_token"
export OPENAI_API_KEY="your_key" 
```

### GitHub Webhook Setup
```bash
cd server
./staff webhook configure --webhook-url https://yourserver.com/api/v1/proposal/approve
```
You will need ngrok if you are doing this locally.

### Run
```bash
cd server
go run cmd/main.go server
```

## Workflow
1. Agent processes task → creates PR
2. Human reviews/merges PR 
3. GitHub webhook → task completed
4. Agent picks up next task

## Commands
Commands for convenience no need to use them.
```bash
go run cmd/main.go  create-task --title "Task" --description "Details"
go run cmd/main.go  list-tasks
go run cmd/main.go  list-agents
go run cmd/main.go  start-agent --name agent-name
go run cmd/main.go  webhook configure
```