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.
πΌοΈ Product Screenshots
The embedded web UI covers ticket orchestration, AI-assisted planning, skill authoring, and live project tracking.
Live execution
Monitor real project work as tickets move across backlog, todo, in-progress, and review.
Ticket board Manage backlog and execution flow with a kanban-style ticket view.
|
Project AI Break work into tickets and inspect workspace context directly beside the board.
|
Skill editor Edit built-in or custom skills that drive repeatable automation workflows.
|
π§ Why OpenASE Exists
AI coding agents are powerful β but only when humans stay in control. The real question is how that control works. OpenASE is built around two complementary modes of humanβagent interaction: synchronous and asynchronous.
Asynchronous AI β Ticket Agents
When the requirements are clear, the acceptance criteria are well-defined, and a Harness (a hard-boundary document that constrains agent behavior) is in place, the Ticket Agent executes the entire task autonomously. It follows the Workflow's instructions, updates ticket statuses, and completes the work described in each ticket β humans don't need to babysit.
The Workflow defines the status flow and tells the agent how to transition tickets through each stage. It is a soft control surface: you write natural-language instructions in the Workflow to guide how the agent should behave at each status. Here are two common patterns:
-
Fullstack Coder β A single agent handles the entire lifecycle. Set up a simple status flow like Todo β In Progress β In Review β Merging β Done. The agent picks up a ticket, writes the code, opens a PR, and moves it forward. Human review at the In Review stage is optional β you can keep it for quality gates or let another agent handle the review.
-
Mixed Relay β Multiple specialized agents collaborate in a relay. Set up a richer flow like Design β Backend β Frontend β Testing β In Review β Merging β Done, and assign different agent roles (product manager, backend engineer, frontend engineer, tester) to each stage. Agents hand off work to the next role as the ticket progresses. Human review checkpoints are optional at any stage β you can insert them where you want oversight, or remove them entirely for full autonomy.
Both async and sync AI support multiple agent CLIs. Claude Code and Codex are recommended for production use; Gemini CLI is supported but less stable.
Synchronous AI β Project AI
When your requirements are still vague, the problem space needs exploration, or you're not ready to commit to a formal ticket β start a conversation with Project AI.
Project AI is a synchronous, interactive assistant that lives in the sidebar of the control plane. Use it to analyze requirements, explore technical approaches, draft PRDs and documentation, scaffold repositories, and prepare everything before kicking off async execution. Each conversation tab runs in an independent workspace β tabs are isolated, can run in parallel, and are easy to manage and review side by side.
What Project AI can do:
- Read ticket details, dependencies, activity history, and run status
- Read Workflow/Harness configuration, Skill code, and machine health
- Inspect git workspace diffs (branch, file changes, repo status)
- Create and update tickets, publish project updates
- Modify Workflows/Harnesses and Skills directly
- Trigger agent execution on tickets
- Operate git (commit, branch, push)
- Control agent runtimes (pause, resume, interrupt)
Multi-agent, isolated workspaces β in one panel: Each Project AI tab spawns its own isolated workspace. You can run multiple agents side by side in the same panel β each working on a different task, in a different branch, with zero interference. No more juggling terminals or switching between IDEs. One unified view to launch, monitor, and interact with all your agents simultaneously.
Context-aware focus: As you navigate the control plane, Project AI automatically switches between 4 focus modes β Workflow, Skill, Ticket, and Machine β injecting the relevant context into the conversation so it always understands what you're looking at.
Best practice: Start with a fuzzy idea, discuss it with Project AI to converge on the best approach, let it draft documents and initialize the repo. Then set up an automated Fullstack or Mixed Relay Workflow, configure ticket dependencies to control parallelism and blocking, and let the system run. With well-structured Harnesses and dependency graphs, the platform can sustain long periods of high-throughput autonomous work with zero human intervention.
Skills β Extending What Agents Can Do
Skills are reusable instruction documents that give agents extra capabilities beyond raw coding. Every Workflow automatically binds a built-in Ticket Skill that teaches the Ticket Agent how to update ticket statuses on the platform β this is how agents drive the status flow without hardcoded logic.
Beyond the built-in skills, you can:
- Bind more built-in skills to any Workflow for common operations (e.g., git conventions, PR creation, code review checklists).
- Create custom skills from the Skill Editor to encode project-specific knowledge and procedures.
- Import skills from your repository β ask Project AI to pull skill files from your repo and register them in OpenASE.
When a Workflow runs, its bound skills are injected into the CLI agent's skill directory at runtime (e.g., .codex/skills/, .claude/skills/, .gemini/skills/), so the agent picks them up natively. Project AI has access to all skills regardless of Workflow binding, making it the ideal place to author, edit, and debug skills before deploying them.
Best practice: Use Project AI to create, modify, or debug your skills interactively. Once a skill works as expected, save it to OpenASE and bind it to the relevant Workflows β every Ticket Agent that runs under those Workflows will inherit the skill automatically.
The Interplay
In practice, these two modes are constantly interleaved:
- Requirements change β existing Harnesses go stale and need synchronous refinement.
- Projects iterate β new Harnesses must be authored to prevent agents from drifting off course.
- Tech debt accumulates β scheduled jobs trigger agents to clean it up automatically on a cron.
This interplay of sync and async work deserves a unified home β not scattered across terminals, IDEs, and chat windows. OpenASE brings it all together: multi-agent CLI support (Claude Code, Codex, Gemini CLI), multi-machine scheduling, and a single control plane so you never have to context-switch between tools.
Organization & Project Management
OpenASE supports multi-Organization management out of the box. Each Org contains its own set of Projects, and each Project has independent tickets, workflows, skills, machines, and agent configurations. Cross-Org team collaboration (shared projects, role-based permissions across Orgs) is currently WIP.
β οΈ Security Notice
To maximize unattended Workflow execution efficiency, OpenASE launches CLI agents with permissive flags by default (e.g., --dangerously-skip-permissions for Claude Code, --yolo for Codex). This means agents can read, write, and execute arbitrary commands on the host machine without per-action confirmation. You can change this to standard (interactive) mode per-provider in the Provider settings page.
Be aware of the risks:
- Only run OpenASE on machines where you trust the agent's scope of access.
- Restrict OS-level permissions (user accounts, filesystem boundaries) as appropriate.
- This project is NOT designed for public-facing deployment. It is intended for local development, private networks, and trusted environments.
- Browser access is always authorization-gated. Fresh local installs start with local bootstrap links instead of anonymous admin access, and shared or networked deployments should move to HTTPS + OIDC as soon as practical. See the OIDC & RBAC Guide for the rollout model.
The Vision
OpenASE aims to be a full-lifecycle software engineering platform: end-to-end iteration from ticket to deployed code, team collaboration across roles, and multi-repository orchestration β all driven by the ticket-first, agent-native model described above.
β¨ Key Features
π Ticket-Driven Orchestration
Kanban Board & List Views
Parent/Child & Dependency Tracking
Custom Statuses & Priorities
Repository Scope Binding
|
π€ Multi-Agent Support
Claude Code / Codex / Gemini CLI
Real-time Streaming Output (SSE)
Agent Lifecycle Management
Concurrent Execution Control
|
β‘ Workflow Engine
Markdown Harness Documents
Skill Binding & Lifecycle Hooks
Scheduled Cron Jobs
Built-in Role Templates
|
π₯οΈ Machine Management
Local / Direct-Connect / Reverse-Connect Machines
Websocket Execution + SSH Helper Compatibility
Health Monitoring & Probes
CPU / Memory / Disk Metrics
Connectivity Diagnostics
|
π Auth & Security
OIDC Browser Login (Auth0, Entra ID)
Agent Platform Token Auth
Org & Project RBAC
GitHub Credential Management
|
π‘ 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, managed user service (systemd --user on Linux, launchd on macOS) |
| Machines (Remote) |
β
Stable |
Remote Runtime v1 uses websocket-only execution for direct-connect listeners and reverse-connect daemons; SSH is helper-only for bootstrap and diagnostics |
| OIDC Auth & RBAC |
β
Stable |
Browser login, session management, org/project RBAC |
Roadmap
| Priority |
Item |
Description |
| π‘ Medium |
Remote Runtime Operations |
Expand rollout automation, dashboards, and operator tooling around the websocket-only remote runtime plane |
| π‘ Medium |
Windows Support |
Native service management and shell-script support outside WSL2 |
| π‘ Medium |
Notification Channels |
Webhook, Telegram, Slack, and WeCom notification delivery |
| π‘ Medium |
iOS & Android App |
Mobile control plane for monitoring and managing projects on the go |
| π‘ Medium |
Desktop All-in-One App |
Standalone desktop application bundling the full OpenASE experience |
| π‘ Medium |
Kubernetes Runtime |
Run agent workloads on Kubernetes clusters for elastic scaling |
| π’ 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 |
Status |
Notes |
| Linux (x86_64, arm64) |
β
Fully supported |
Primary development and deployment platform |
| macOS (Apple Silicon, Intel) |
β
Supported |
setup, up/down/restart/logs, and the managed user service use launchd with ~/Library/LaunchAgents/com.openase.plist |
| Windows |
β οΈ Untested |
Native service management and shell scripts have not been validated. WSL2 is recommended as a workaround |
Fast Path: One-Command Installer
For fresh Linux or macOS machines, the fastest supported path is the release
installer:
curl -fsSL https://raw.githubusercontent.com/pacificstudio/openase/main/scripts/install.sh | sh
The installer:
- detects the current OS, architecture, package managers, Docker usability, and writable install targets
- downloads the matching GitHub release archive plus
checksums.txt
- verifies the release checksum before installing
openase
- offers PostgreSQL bootstrap through a supported system package manager or Docker when available
- writes a runnable
~/.openase/config.yaml and ~/.openase/.env when automatic setup completes successfully
To pin a release version instead of installing the latest release:
curl -fsSL https://raw.githubusercontent.com/pacificstudio/openase/main/scripts/install.sh | sh -s -- --version v0.4.0
If you prefer to build from source, continue with the manual steps below.
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 22 LTS or 24 LTS & pnpm (build-time only)
Node.js is only needed to build the frontend. It is not required at runtime.
Use an LTS release: Node 22 LTS is the default recommendation, and Node 24 LTS is also expected to work. Avoid odd-numbered non-LTS releases such as Node 23. The current frontend dependency set includes engines constraints that can cause pnpm to reject versions like v23.11.1 during install or build.
# 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.
There is no third setup-managed "user-space local database" path. If your user cannot access Docker, you must prepare PostgreSQL yourself before running openase setup.
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: Bring Your Own PostgreSQL
For macOS local development, prefer a native PostgreSQL install managed by Homebrew or Postgres.app if you do not want Docker to own the database lifecycle.
# macOS via Homebrew
brew install postgresql@16
brew services start postgresql@16
# Verify a DSN that setup can reuse
psql postgres://localhost:5432/postgres?sslmode=disable -c "SELECT 1;"
On Linux, a distro package install is the straightforward equivalent:
# 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 @google/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 build
go build -o ./bin/openase ./cmd/openase
make build-web rebuilds the embedded frontend and then compiles the Go binary. It does not refresh the committed OpenAPI artifacts. If you changed backend API shapes or want to refresh api/openapi.json and web/src/lib/api/generated/openapi.d.ts, run make openapi-generate separately first.
Verify the build:
./bin/openase version
Step 2: Run First-Time Setup
./bin/openase setup
The interactive terminal setup will walk you through:
- Database β start a Docker PostgreSQL automatically, or enter an existing PostgreSQL connection (
host, port, database, user, password, sslmode)
- CLI detection β checks for
git, claude, codex, gemini on PATH
- Runtime mode β config-only, or install the managed user service (
systemd --user on Linux, launchd on macOS)
- Seed data β creates org, project, ticket statuses, and detected providers
- Local browser bootstrap β after startup, generate a one-time local bootstrap link with
openase auth bootstrap create-link --return-to / --format text
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. If your account does not have Docker access, setup does not offer another local-database fallback; prepare PostgreSQL first and then choose the manual connection path.
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:
- Configure ticket statuses and connect a repository
- Register a machine and an AI agent
- Create your first workflow and ticket
- Watch the agent execute automatically
π§ Alternative Run Modes
Managed User Service
Setup can install the managed 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
The managed service only runs OpenASE itself (openase all-in-one --config ...). It does not manage PostgreSQL for you. If you pointed OpenASE at an existing PostgreSQL instance, keep that database running separately. If setup created a Docker PostgreSQL container, that container is still a separate service boundary from OpenASE.
| Platform |
Manager |
Service definition |
Inspect |
Restart |
Stop |
Logs |
| Linux |
systemd --user |
~/.config/systemd/user/openase.service |
systemctl --user status openase |
systemctl --user restart openase |
systemctl --user stop openase |
journalctl --user -u openase -n 200 -f |
| macOS |
launchd |
~/Library/LaunchAgents/com.openase.plist |
launchctl print gui/$(id -u)/com.openase || launchctl print user/$(id -u)/com.openase |
launchctl kickstart -k <target> |
launchctl bootout <target> |
tail -n 200 -f ~/.openase/logs/openase.stdout.log ~/.openase/logs/openase.stderr.log |
On macOS, setup prefers the gui/<uid>/com.openase target and falls back to user/<uid>/com.openase when the login session is attached to that domain instead. Use whichever target launchctl print resolves on your machine for kickstart and bootout.
For long-running Linux server use, systemd --user may also need lingering enabled so the user service survives logout and can start as expected after reboot:
loginctl enable-linger "$USER"
Run that once per user account on machines where you expect OpenASE to keep running without an active login session.
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_SECURITY_CIPHER_SEED=shared-cluster-seed
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_SECURITY_CIPHER_SEED |
empty |
Optional shared encryption seed for GitHub credential storage; set this explicitly when different environments must read the same encrypted records |
OPENASE_ORCHESTRATOR_TICK_INTERVAL |
5s |
Orchestrator polling interval |
OPENASE_LOG_FORMAT |
text |
Log format (text or json) |
OPENASE_LOG_LEVEL |
info |
Log level |
OPENASE_SECURITY_CIPHER_SEED maps to security.cipher_seed in config files. If it is unset, OpenASE keeps the legacy behavior and derives the GitHub credential cipher seed from database.dsn.
Config File Lookup Order
--config <path> flag
./config.yaml (or .yml, .json, .toml)
~/.openase/config.yaml
OPENASE_* environment variables + built-in defaults
Authentication
- Fresh local installs use one-time local bootstrap links for browser authorization; they no longer expose anonymous admin access.
- OIDC remains the long-term browser auth path for shared, team, and networked deployments.
- If an active OIDC rollout breaks login, use
openase auth break-glass disable-oidc, then re-enter through openase auth bootstrap create-link --return-to /admin/auth --format text.
OIDC supports standard providers: Auth0, Azure Entra ID, and any OpenID
Connect compliant IdP. See the IAM Dual-Mode Contract
(EN | δΈζ)
for the product model, and the 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
--jq '<expr>' # JQ filter
--json field1,field2 # Select fields
--template '{{...}}' # Go template
Both --kebab-case and --snake_case flag spellings are accepted.
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 assets + Go binary (does not refresh OpenAPI artifacts)
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
β Star History
π License
See LICENSE.
Friendly Link
linux.do
OpenASE
Create the ticket. The agent does the rest.