Skip to content

Commit 3bdf835

Browse files
committed
chore: upgrade readme
1 parent 6d6a6e9 commit 3bdf835

1 file changed

Lines changed: 184 additions & 4 deletions

File tree

README.md

Lines changed: 184 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,34 @@
1-
# ARC - Agentic Runtime Controller
1+
# ARC - Agent oRchestrator for Containers
22

33
[![GoDoc](https://pkg.go.dev/badge/github.com/rizome-dev/arc)](https://pkg.go.dev/github.com/rizome-dev/arc)
44
[![Go Report Card](https://goreportcard.com/badge/github.com/rizome-dev/arc)](https://goreportcard.com/report/github.com/rizome-dev/arc)
55
[![CI](https://github.com/rizome-dev/arc/actions/workflows/ci.yml/badge.svg)](https://github.com/rizome-dev/arc/actions/workflows/ci.yml)
66
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
77

8-
ARC is a production-ready, unopinionated agent & workflow management system.
8+
ARC is a production-ready orchestrator for managing container-based agents in Agentic Development Swarms. It provides a robust framework for deploying, managing, and coordinating autonomous agents at scale with support for both Docker and Kubernetes runtimes.
99

1010
built by [rizome labs](https://rizome.dev) | contact: [hi@rizome.dev](mailto:hi@rizome.dev)
1111

1212
```bash
1313
go get github.com/rizome-dev/arc
1414
```
1515

16-
## Quick Start
16+
## Deployment
17+
18+
```bash
19+
# Build and run the gRPC/HTTP server
20+
make server
21+
22+
# Or separately:
23+
make server-build
24+
./build/arc-server
25+
```
26+
27+
The server exposes:
28+
- gRPC API on `:50051`
29+
- REST API on `:8080`
30+
31+
### Using the Library
1732

1833
```go
1934
package main
@@ -88,14 +103,179 @@ func main() {
88103
}
89104
```
90105

106+
### Using the gRPC API
107+
108+
```go
109+
package main
110+
111+
import (
112+
"context"
113+
"log"
114+
115+
"google.golang.org/grpc"
116+
"google.golang.org/grpc/credentials/insecure"
117+
"google.golang.org/protobuf/types/known/emptypb"
118+
119+
arcv1 "github.com/rizome-dev/arc/api/v1"
120+
)
121+
122+
func main() {
123+
// Connect to server
124+
conn, err := grpc.Dial("localhost:50051",
125+
grpc.WithTransportCredentials(insecure.NewCredentials()))
126+
if err != nil {
127+
log.Fatal(err)
128+
}
129+
defer conn.Close()
130+
131+
client := arcv1.NewARCClient(conn)
132+
133+
// Check health
134+
health, _ := client.Health(context.Background(), &emptypb.Empty{})
135+
log.Printf("Server status: %s", health.Status)
136+
137+
// Create workflow
138+
resp, _ := client.CreateWorkflow(context.Background(),
139+
&arcv1.CreateWorkflowRequest{
140+
Workflow: &arcv1.Workflow{
141+
Name: "example",
142+
Tasks: []*arcv1.Task{
143+
{
144+
Name: "task-1",
145+
AgentConfig: &arcv1.AgentConfig{
146+
Image: "ubuntu:latest",
147+
Command: []string{"echo", "Hello"},
148+
},
149+
},
150+
},
151+
},
152+
})
153+
154+
// Start workflow
155+
client.StartWorkflow(context.Background(),
156+
&arcv1.StartWorkflowRequest{
157+
WorkflowId: resp.WorkflowId,
158+
})
159+
}
160+
```
161+
162+
### REST API Examples
163+
164+
```bash
165+
# Health check
166+
curl http://localhost:8080/health
167+
168+
# Create workflow
169+
curl -X POST http://localhost:8080/api/v1/workflows \
170+
-H "Content-Type: application/json" \
171+
-d '{
172+
"workflow": {
173+
"name": "my-workflow",
174+
"tasks": [{
175+
"name": "task-1",
176+
"agent_config": {
177+
"image": "ubuntu:latest",
178+
"command": ["echo", "Hello World"]
179+
}
180+
}]
181+
}
182+
}'
183+
184+
# List agents
185+
curl http://localhost:8080/api/v1/agents
186+
187+
# Stream events
188+
curl http://localhost:8080/api/v1/events/stream
189+
```
190+
191+
## Building and Testing
192+
193+
```bash
194+
# Run all tests
195+
make test
196+
197+
# Generate coverage report
198+
make coverage
199+
200+
# Run linter
201+
make lint
202+
203+
# Run security scan
204+
make security
205+
206+
# Build for multiple platforms
207+
make build-cross
208+
209+
# Build Docker image
210+
make docker-build
211+
```
212+
213+
## Proto File Management
214+
215+
### Files Included in Repository
216+
217+
The following generated files are committed for convenience:
218+
- `api/v1/*.pb.go` - Go type definitions
219+
- `api/v1/*_grpc.pb.go` - gRPC service implementations
220+
- `api/v1/*.pb.gw.go` - HTTP gateway handlers
221+
222+
### Regenerating Proto Files
223+
224+
```bash
225+
# Clean all generated files
226+
make proto-clean
227+
228+
# Regenerate from proto definitions
229+
make proto
230+
```
231+
232+
### Required Proto Tools
233+
234+
Install with `make proto-install`:
235+
- `protoc-gen-go` - Generate Go types
236+
- `protoc-gen-go-grpc` - Generate gRPC code
237+
- `protoc-gen-grpc-gateway` - Generate HTTP gateway
238+
- `protoc-gen-openapiv2` - Generate OpenAPI specs
239+
91240
## Deployment
92241

242+
### Docker
243+
244+
```bash
245+
# Build image
246+
make docker-build
247+
248+
# Run container
249+
docker run -d \
250+
-p 50051:50051 \
251+
-p 8080:8080 \
252+
-v /var/run/docker.sock:/var/run/docker.sock \
253+
arc:latest
254+
```
255+
93256
### Kubernetes
94257

95258
```bash
259+
# Install with Helm
96260
helm install arc ./helm/arc
97-
# or
261+
262+
# With custom values
98263
helm install arc ./helm/arc -f values.yaml
264+
265+
# Upgrade
266+
helm upgrade arc ./helm/arc
267+
```
268+
269+
### Configuration
270+
271+
Environment variables:
272+
```bash
273+
ARC_GRPC_PORT=50051 # gRPC server port
274+
ARC_HTTP_PORT=8080 # HTTP server port
275+
ARC_RUNTIME=docker # Runtime: docker or kubernetes
276+
ARC_STATE_BACKEND=memory # State: memory, badger, postgres
277+
ARC_AMQ_PATH=./data # AMQ storage path
278+
ARC_LOG_LEVEL=info # Log level
99279
```
100280

101281
## License

0 commit comments

Comments
 (0)