---
title: 'Introduction'
description: 'Event-driven platform for managing node rollouts and infrastructure operations'
---

# ODIN

**ODIN** is an event-driven platform for managing node rollouts, security policies, and infrastructure operations across distributed networks.

## What is ODIN?

ODIN provides a robust, scalable foundation for:

- **Rollout Management**: Orchestrate deployments across multiple nodes with event-driven state tracking
- **Security Policies**: Enforce security rules and aggregate state across infrastructure
- **Event Bus**: Real-time event streaming via NATS JetStream for inter-service communication
- **Geo-aware Operations**: Location-based routing and management decisions
- **Monitoring & Observability**: Built-in metrics, logging, and health checks

## Key Features

<CardGroup cols={2}>
  <Card title='Event-Driven Architecture' icon='stream' color='#0D9373'>
    NATS JetStream-based event bus for reliable, scalable inter-service communication
  </Card>
  <Card title='Microservices Design' icon='boxes' color='#0D9373'>
    4 independent services (API Gateway, Management, Security, Geo) with clear separation of concerns
  </Card>
  <Card title='Production-Ready Docker' icon='docker' color='#0D9373'>
    Multi-stage builds with minimal distroless images (~50MB per service)
  </Card>
  <Card title='Comprehensive Testing' icon='circle-check' color='#0D9373'>
    Unit tests, integration tests, smoke tests, and linting (golangci-lint)
  </Card>
  <Card title='Full Reverse Proxy' icon='network-wired' color='#0D9373'>
    Caddy reverse proxy with 7 subdomains on odin.shadix.pro
  </Card>
  <Card title='Cloud-Native Ready' icon='cloud' color='#0D9373'>
    Docker Compose for local dev, prepared for Kubernetes later
  </Card>
</CardGroup>

## Core Services

| Service                | Port  | Purpose                                | Status  |
| ---------------------- | ----- | -------------------------------------- | ------- |
| **API Gateway**        | 12010 | HTTP facade, proxies external requests | ✓ v0.1  |
| **Management Service** | 12020 | Event publisher for rollout.started    | ✓ v0.1  |
| **Security Service**   | 12040 | Event subscriber, state aggregation    | ✓ v0.1  |
| **Geo Service**        | 12030 | Geo-aware operations (placeholder)     | ⏳ v0.2 |

## Event Flow

```
┌─────────────────┐
│   External API  │
└────────┬────────┘
         │ HTTP POST
         ↓
┌─────────────────────────────────────┐
│      API Gateway (12010)            │
│  • HTTP facade                      │
│  • Request validation & routing     │
└────────┬────────────────────────────┘
         │ HTTP proxy
         ↓
┌─────────────────────────────────────┐
│   Management Service (12020)        │
│  • Accepts rollout requests         │
│  • Creates events                   │
└────────┬────────────────────────────┘
         │ Publish to NATS
         ↓
┌─────────────────────────────────────┐
│   NATS JetStream (12060)            │
│  • Stream: ODIN_EVENTS              │
│  • Subject: odin.mgmt.rollout.* │
└────────┬────────────────────────────┘
         │ Subscribe to events
         ↓
┌─────────────────────────────────────┐
│   Security Service (12040)          │
│  • Consumes events                  │
│  • Aggregates state                 │
│  • Enforces policies                │
└─────────────────────────────────────┘
```

## Get Started

<CardGroup cols={2}>
  <Card title='Quickstart' icon='play' href='/getting-started/quickstart'>
    Run ODIN locally in 5 minutes with Docker Compose
  </Card>
  <Card title='Local Development' icon='laptop-code' href='/getting-started/local-development'>
    Set up your development environment for ODIN
  </Card>
  <Card title='Architecture' icon='sitemap' href='/architecture/overview'>
    Deep dive into ODIN's design and components
  </Card>
  <Card title='API Reference' icon='rectangle-terminal' href='/api-reference/overview'>
    Complete API documentation and examples
  </Card>
</CardGroup>

## Technology Stack

- **Language**: Go 1.25.0 (backend), JavaScript/TypeScript (future frontend)
- **Event Bus**: NATS 2.10 with JetStream
- **Container Runtime**: Docker with multi-stage builds
- **Orchestration**: Docker Compose (MVP), Kubernetes-ready
- **Reverse Proxy**: Caddy 2.8.4 (7 subdomains)
- **Linting**: golangci-lint (10 active rules)
- **Monitoring**: Prometheus, Grafana, Uptime Kuma

## Deployment

### Quick Deploy (Local)

```bash
docker compose up -d
curl http://localhost:12010/healthz
```

### Production Deploy (m5.movida.biz)

```bash
ssh m5 'cd /opt/odin && docker compose up -d'
curl https://api.odin.shadix.pro/healthz
```

[Full deployment guide →](/deployment/m5-deployment)

## Current Status

**Version**: v0.1 (Event-driven MVP)  
**Released**: April 29, 2026  
**Commit**: [6bdefc2](https://git.movida.biz/shadix-pro/odin/commit/6bdefc2)

### Completed ✓

- 4 core microservices (API Gateway, Management, Security, Geo placeholder)
- NATS JetStream event bus with durable consumers
- 10+ unit tests + integration tests
- Multi-stage Docker builds with distroless runtime
- Docker Compose with 13 services (app + infra + monitoring)
- golangci-lint integration (0 issues)
- Caddy reverse proxy configuration (7 subdomains)
- Comprehensive smoke tests

### In Progress ⏳

- PostgreSQL storage layer + migrations
- Geo-service business logic
- Security-service policy engine
- Management UI

### Roadmap 🗺️

- v0.2: Storage + business logic
- v0.3: Advanced patterns (job workers, circuit breakers)
- v1.0: Production hardening + Kubernetes support

## Community & Support

- **Issues**: [Report bugs](https://git.movida.biz/shadix-pro/odin/issues)
- **Discussions**: [Join conversations](https://git.movida.biz/shadix-pro/odin/discussions)
- **Contributing**: [How to contribute](/development/contributing)

## License

MIT License - See [LICENSE](https://git.movida.biz/shadix-pro/odin/blob/master/LICENSE)

---

**Ready to get started?** [→ Quickstart Guide](/getting-started/quickstart)
