openase

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 5, 2026 License: MIT

README ΒΆ

OpenASE
Ticket-Driven Automated Software Engineering

OpenASE is an all-in-one platform that turns tickets into working code β€” AI agents automatically pick up tickets, execute workflows on your machines, and deliver results with full traceability.

Quick Start English Guide δΈ­ζ–‡ζŒ‡ε— Architecture CLI

Linux macOS Windows Go SvelteKit Tailwind PostgreSQL Embedded SSE


✨ Key Features

πŸ“‹ Ticket-Driven Orchestration

Core

Kanban Board & List Views

Parent/Child & Dependency Tracking

Custom Statuses & Priorities

Repository Scope Binding

πŸ€– Multi-Agent Support

Agents

Claude Code / Codex / Gemini CLI

Real-time Streaming Output (SSE)

Agent Lifecycle Management

Concurrent Execution Control

⚑ Workflow Engine

Automation

Markdown Harness Documents

Skill Binding & Lifecycle Hooks

Scheduled Cron Jobs

Built-in Role Templates

πŸ–₯️ Machine Management

Infra

SSH / Local / Cloud VMs

Health Monitoring & Probes

CPU / Memory / Disk Metrics

Connectivity Diagnostics

πŸ” Auth & Security

Security

OIDC Browser Login (Auth0, Entra ID)

Agent Platform Token Auth

Org & Project RBAC

GitHub Credential Management

πŸ“‘ Observability

Observability

Live Activity Event Stream

Agent Run Step Tracking

GitHub Webhook Ingestion

Project Update Threads


πŸ€” What is OpenASE?

OpenASE is a single Go binary that ships an API server, workflow orchestrator, and embedded web UI together. It follows a ticket-driven model: every piece of work is a ticket, every ticket has a workflow, and AI agents automatically pick up and execute tickets based on status triggers.

You create a ticket  β†’  Orchestrator detects pickup status
    β†’  Agent claims the ticket  β†’  Executes workflow on a Machine
    β†’  Activity stream records every step  β†’  Ticket completes

No Node.js at runtime β€” the SvelteKit frontend is compiled and embedded into the Go binary via go:embed.


πŸ“Š Status & Roadmap

Feature Completion

Module Status Notes
Tickets βœ… Stable CRUD, Kanban/list views, comments, dependencies, parent/child, archiving
Agents βœ… Stable Registration, run monitoring, streaming output, lifecycle management
Workflows βœ… Stable Harness editing, status/skill binding, hooks, version history, impact analysis
Skills βœ… Stable Built-in & custom skills, workflow binding, enable/disable
Activity βœ… Stable Real-time SSE event stream, filtering, search
Updates βœ… Stable Threads, comments, revision history
Settings βœ… Stable Statuses, repositories, notifications, security, archived tickets
Scheduled Jobs βœ… Stable Cron-based ticket creation, manual trigger, enable/disable
Machines (Local) βœ… Stable Local machine registration, health probes, resource metrics
CLI βœ… Stable Dual-layer contract, resource commands, raw API, live streams
Setup βœ… Stable Interactive terminal setup, Docker PostgreSQL, systemd service
Machines (Remote) 🚧 WIP Remote SSH/cloud machine execution is under active development
OIDC Auth 🚧 WIP Browser login, session management, RBAC

Roadmap

Priority Item Description
πŸ”΄ High Remote Machine Execution Full support for SSH-based remote machines, workspace provisioning, and remote agent execution
🟑 Medium macOS / Windows Support Testing and adaptation for non-Linux platforms
🟑 Medium Notification Channels Slack, email, and webhook notification delivery
🟒 Future Multi-org Collaboration Cross-organization project sharing and permissions
🟒 Future Plugin Ecosystem Third-party plugin support for custom tools and integrations
🟒 Future Metrics Dashboard Agent performance metrics, ticket throughput analytics

πŸš€ From Zero to Running

This section walks through everything you need on a fresh machine β€” from installing system dependencies to opening the web UI.

Platform Support

Platform Status Notes
Linux (x86_64, arm64) βœ… Fully supported Primary development and deployment platform
macOS (Apple Silicon, Intel) ⚠️ Untested The Go binary should compile, but setup flow and shell scripts have not been validated
Windows ⚠️ Untested Setup flow, systemd service management, and shell scripts have not been validated. WSL2 is recommended as a workaround

Step 0: System Prerequisites

Install Go 1.26+
# Download (adjust version and OS/arch as needed)
wget https://go.dev/dl/go1.26.1.linux-amd64.tar.gz

# Extract to /usr/local (requires sudo)
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.26.1.linux-amd64.tar.gz

# Add to PATH β€” append to ~/.bashrc or ~/.zshrc
export PATH=$PATH:/usr/local/go/bin

# Verify
go version   # go1.26.1 linux/amd64

Alternative: if using a project-local toolchain:

export PATH=$PWD/.tooling/go/bin:$HOME/.local/go1.26.1/bin:$PATH
Install Node.js 18+ & pnpm (build-time only)

Node.js is only needed to build the frontend. It is not required at runtime.

# Option A: via nvm (recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.bashrc
nvm install 22
nvm use 22

# Option B: via package manager (Ubuntu/Debian)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

# Enable corepack for pnpm
corepack enable

# Verify
node --version   # v22.x.x
pnpm --version   # 10.x.x (via corepack)
Install PostgreSQL

You have two choices β€” let OpenASE setup start a Docker-backed PostgreSQL automatically, or install one yourself.

Option A: Docker (recommended for local dev)

# Install Docker if not present
sudo apt-get update && sudo apt-get install -y docker.io
sudo usermod -aG docker $USER
newgrp docker   # or re-login

# OpenASE setup will create the container for you automatically

Option B: System PostgreSQL

# Ubuntu/Debian
sudo apt-get install -y postgresql postgresql-client

# Create database and user
sudo -u postgres psql -c "CREATE USER openase WITH PASSWORD 'openase';"
sudo -u postgres psql -c "CREATE DATABASE openase OWNER openase;"

# Verify
psql postgres://openase:openase@localhost:5432/openase?sslmode=disable -c "SELECT 1;"
Install Git & other tools
# Ubuntu/Debian
sudo apt-get install -y git make curl wget

# Verify
git --version
make --version
(Optional) Install AI Agent CLIs

OpenASE setup will auto-detect these if present on PATH:

Agent Install
Claude Code npm install -g @anthropic-ai/claude-code
Codex npm install -g @openai/codex
Gemini CLI npm install -g @anthropic-ai/gemini-cli

These can also be installed later β€” setup will seed detected providers.

Step 1: Clone & Build

git clone https://github.com/PacificStudio/openase.git
cd openase

# Build frontend + Go binary in one command
make build-web

This runs the following under the hood:

corepack pnpm --dir web install --frozen-lockfile
corepack pnpm --dir web run api:generate
corepack pnpm --dir web run build
go build -o ./bin/openase ./cmd/openase

Verify the build:

./bin/openase version

Step 2: Run First-Time Setup

./bin/openase setup

The interactive terminal setup will walk you through:

  1. Database β€” start a Docker PostgreSQL automatically, or enter an existing DSN
  2. CLI detection β€” checks for git, claude, codex, gemini on PATH
  3. Auth mode β€” disabled (local dev) or oidc (browser login)
  4. Service mode β€” config-only, or install a systemd --user service
  5. Seed data β€” creates org, project, ticket statuses, and detected providers

Setup creates the following under ~/.openase/:

~/.openase/
β”œβ”€β”€ config.yaml       # Runtime configuration
β”œβ”€β”€ .env              # Platform auth token
β”œβ”€β”€ logs/             # Service logs
└── workspaces/       # Agent workspaces

Docker PostgreSQL note: When choosing Docker, setup uses predictable defaults β€” container openase-local-postgres, port 127.0.0.1:15432, database openase. It generates the password automatically.

Step 3: Launch

# All-in-one: API server + orchestrator in a single process
./bin/openase all-in-one --config ~/.openase/config.yaml

The control plane is now available at:

http://127.0.0.1:19836

Tip: Run ./bin/openase doctor --config ~/.openase/config.yaml to diagnose any issues.

Step 4: Verify

# Health checks
curl -fsS http://127.0.0.1:19836/healthz
curl -fsS http://127.0.0.1:19836/api/v1/healthz

# Or use the built-in doctor
./bin/openase doctor --config ~/.openase/config.yaml

Open http://127.0.0.1:19836 in your browser β€” you should see the OpenASE control plane.

What's Next?

Now that the platform is running, follow the User Guide β€” Quick Start (EN | δΈ­ζ–‡) to:

  1. Configure ticket statuses and connect a repository
  2. Register a machine and an AI agent
  3. Create your first workflow and ticket
  4. Watch the agent execute automatically

πŸ”§ Alternative Run Modes

Managed User Service

Setup can install a systemd --user service automatically. You can also manage it manually:

./bin/openase up      --config ~/.openase/config.yaml   # Install & start
./bin/openase logs    --lines 100                        # Tail logs
./bin/openase restart                                    # Restart
./bin/openase down                                       # Stop & uninstall

Split-Process Mode

Run API server and orchestrator as separate processes:

./bin/openase serve       --config ~/.openase/config.yaml
./bin/openase orchestrate --config ~/.openase/config.yaml

Environment-Only Mode

If you prefer env vars over config files:

export OPENASE_DATABASE_DSN=postgres://openase:openase@localhost:5432/openase?sslmode=disable
export OPENASE_SERVER_PORT=19836
export OPENASE_ORCHESTRATOR_TICK_INTERVAL=2s

./bin/openase all-in-one

Or source from ~/.openase/.env:

set -a && source ~/.openase/.env && set +a
./bin/openase all-in-one

βš™οΈ Configuration

Environment Variables

Variable Default Description
OPENASE_SERVER_PORT 19836 HTTP server port
OPENASE_DATABASE_DSN β€” PostgreSQL connection string (required)
OPENASE_ORCHESTRATOR_TICK_INTERVAL 5s Orchestrator polling interval
OPENASE_LOG_FORMAT text Log format (text or json)
OPENASE_LOG_LEVEL info Log level

Config File Lookup Order

  1. --config <path> flag
  2. ./config.yaml (or .yml, .json, .toml)
  3. ~/.openase/config.yaml
  4. OPENASE_* environment variables + built-in defaults

Authentication

Mode Description Use Case
disabled No auth required Local development
oidc Browser login via OIDC provider Production, team use

OIDC supports standard providers: Auth0, Azure Entra ID, and any OpenID Connect compliant IdP. See OIDC & RBAC Guide (EN | δΈ­ζ–‡) for setup.


πŸ—οΈ Architecture

Product Shape

Principle Description
All-Go Monolith API server, orchestrator, setup flow, and embedded UI in one binary
Binary-first Web UI embedded via go:embed β€” no Node.js at runtime
Ticket-driven Tickets, workflows, statuses, and activity are the core operating model
Multi-agent Adapter-based support for Claude Code, Codex, and Gemini CLI
Git-backed Workflow harnesses and skills are repo-aware at runtime

Repository Layout

openase/
β”œβ”€β”€ cmd/openase/              # CLI entrypoint
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ app/                  # App wiring (serve / orchestrate / all-in-one)
β”‚   β”œβ”€β”€ httpapi/              # HTTP API, SSE, webhooks, embedded UI
β”‚   β”œβ”€β”€ orchestrator/         # Scheduling, health checks, retries
β”‚   β”œβ”€β”€ workflow/             # Workflow service, harness, hooks, skills
β”‚   β”œβ”€β”€ agentplatform/        # Agent token auth
β”‚   β”œβ”€β”€ setup/                # First-run setup
β”‚   β”œβ”€β”€ builtin/              # Built-in role & skill templates
β”‚   └── webui/static/         # Embedded frontend output
β”œβ”€β”€ web/                      # SvelteKit control plane source
β”œβ”€β”€ docs/
β”‚   └── guide/                # User guide (per-module docs)
β”œβ”€β”€ config.example.yaml
β”œβ”€β”€ Makefile
└── go.mod

System Flow

flowchart LR
    U[User / Scheduled Job] --> T[Ticket]
    T --> O[Orchestrator]
    O -->|status trigger| A[Agent]
    A --> W[Workflow + Harness]
    W --> S[Skills]
    A -->|executes on| M[Machine]
    M --> R[Results]
    R --> E[Activity Stream]
    E --> UI[Web Control Plane]

πŸ–₯️ Control Plane

The embedded web UI provides a complete project management experience:

Module Capabilities
Tickets Kanban board, list view, filtering, comments, dependencies, repository scoping
Agents Registration, real-time run monitoring, pause/resume/retire lifecycle
Machines SSH/local/cloud registration, health probes, resource metrics
Workflows Harness editing, status binding, skill binding, version history, impact analysis
Skills Built-in & custom skill management, workflow binding
Scheduled Jobs Cron-based ticket creation, manual trigger, enable/disable
Activity Real-time event stream, type filtering, keyword search
Updates Team progress threads, comments, revision history
Settings Statuses, repositories, notifications, security, archived tickets

πŸ’» CLI Reference

OpenASE follows a GitHub-style dual-layer CLI contract:

Resource Commands

openase ticket list       --status-name Todo --json tickets
openase ticket create     --title "Fix login bug" --description "..."
openase ticket update     --status_name "In Review"
openase ticket comment    create --body "Blocking dependency found"
openase ticket detail     $PROJECT_ID $TICKET_ID

openase workflow create   $PROJECT_ID --name "Codex Worker"
openase scheduled-job trigger $JOB_ID
openase project update    --description "Latest context"

Raw API Escape Hatch

openase api GET  /api/v1/projects/$PID/tickets --query status_name=Todo
openase api PATCH /api/v1/tickets/$TID --field status_id=$SID

Live Streams

openase watch tickets $PROJECT_ID

Output Formatting

--jq '<expr>'              # JQ filter
--json field1,field2       # Select fields
--template '{{...}}'       # Go template

Both --kebab-case and --snake_case flag spellings are accepted.


πŸ”Œ Agent Platform

Agent workers inherit environment variables from the workspace wrapper:

Variable Purpose
OPENASE_API_URL Platform API endpoint
OPENASE_AGENT_TOKEN Agent authentication token
OPENASE_PROJECT_ID Current project context
OPENASE_TICKET_ID Current ticket context

πŸ› οΈ Development

Build Commands

make hooks-install        # Set up git hooks (lefthook)
make check                # Run formatting + backend coverage checks
make build-web            # Build frontend + Go binary
make build                # Build Go binary only (uses existing frontend)
make run                  # Run API server in dev mode
make doctor               # Run local environment diagnostics

Frontend Quality Gates

make web-format-check     # Prettier formatting
make web-lint             # ESLint checks
make web-check            # Svelte type checking
make web-validate         # All of the above

OpenAPI Contract

make openapi-generate     # Regenerate api/openapi.json + TS types
make openapi-check        # Verify committed artifacts are up-to-date

Testing

make test                        # Go test suite
make test-backend-coverage       # Full backend tests + coverage gate
make lint                        # Lint changes since origin/main
make lint-all                    # Full lint suite

πŸ“– Documentation

Document EN δΈ­ζ–‡
User Guide English δΈ­ζ–‡
Getting Started English δΈ­ζ–‡
Module Architecture English δΈ­ζ–‡
FAQ English δΈ­ζ–‡
Source Build & Run English δΈ­ζ–‡
OIDC & RBAC English δΈ­ζ–‡
Observability English δΈ­ζ–‡
WebSocket Rollout English δΈ­ζ–‡
Gemini CLI Adaptation English δΈ­ζ–‡
Claude Code Stream Protocol English δΈ­ζ–‡

πŸ“„ License

See LICENSE.


OpenASE
Create the ticket. The agent does the rest.

Directories ΒΆ

Path Synopsis
cmd
openase command
ent
internal
app
cli
tools
atlasdiff command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL