https://github.com/alexk-dev/golemcore-hive
https://github.com/alexk-dev/golemcore-hive
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/alexk-dev/golemcore-hive
- Owner: alexk-dev
- License: apache-2.0
- Created: 2026-03-16T23:17:56.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-31T00:00:37.000Z (3 months ago)
- Last Synced: 2026-03-31T01:37:58.122Z (3 months ago)
- Language: Java
- Size: 469 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Notice: NOTICE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Golemcore Hive
Self-hosted orchestration and control plane for `golemcore-bot` runtimes.
## Stack
- Spring Boot 4.0
- Java 25
- Maven
- React + TypeScript
- Tailwind CSS 3
- Local JSON persistence
## What is implemented
- operator auth with access JWT + refresh JWT cookie
- bot enrollment, machine JWT rotation, fleet registry, roles, and heartbeats
- board flows, board teams, cards, card-bound threads, and command dispatch
- lifecycle signal ingestion from golems
- approval gates for destructive or high-cost commands
- audit history, budget snapshots, notification events, and production guardrails
## Local development
### Backend
```bash
./mvnw test
./mvnw spring-boot:run
```
### Frontend
```bash
cd ui
nvm use
npm ci
npm run test
npm run build
npm run dev
```
The Vite dev server proxies `/api` and `/ws` to the backend on `http://localhost:8080`.
Default bootstrap operator:
- username: `admin`
- password: `change-me-now`
Override bootstrap credentials in `src/main/resources/application.yml` or environment-backed Spring properties before using the app outside local development.
## Storage layout
Hive stores state under `hive.storage.base-path`, defaulting to `./data/hive`.
Important directories:
- `operators/`
- `auth/refresh-sessions/`
- `auth/golem-refresh-sessions/`
- `golems/`
- `golem-roles/`
- `enrollment-tokens/`
- `heartbeats/`
- `boards/`
- `cards/`
- `threads/`
- `thread-messages/`
- `commands/`
- `runs/`
- `lifecycle-signals/`
- `approvals/`
- `audit/`
- `budgets/`
- `notifications/`
## Packaging
Package the backend and built frontend together:
```bash
nvm use
./mvnw package
```
`prepare-package` runs `npm ci`, `npm run build`, and copies `ui/dist` into the Spring Boot jar as static assets.
If you need a backend-only package during local debugging:
```bash
./mvnw -Dskip.frontend=true package
```
## Releases
Pushes to `main` run the conventional release workflow. When releasable commits are present, Hive:
- creates the next `v*` tag with `cocogitto`,
- builds the packaged Spring Boot jar,
- publishes `hive-*.jar` and `sha256sums.txt` to the GitHub Release for that tag,
- triggers container publication to `ghcr.io`.
Published image tags:
- branch pushes outside `main`: short SHA only
- `main`: `latest` and short SHA
- release tags `v*`: ``, `latest`, and short SHA
Example:
```bash
docker pull ghcr.io//golemcore-hive:latest
```
## Production checklist
1. Copy `application-prod.example.yml` into your deployment config and replace secrets.
2. Set a non-empty `hive.security.jwt.secret`.
3. Enable `hive.security.cookie.secure=true`.
4. Change the bootstrap admin password or disable bootstrap admin creation.
5. Set `hive.deployment.production-mode=true`.
When production mode is enabled, Hive fails fast if the JWT secret is missing, refresh cookies are not secure, or the bootstrap password still uses the local default.