Commit Graph

20 Commits

Author SHA1 Message Date
Chris Farhood bf722638f7 Rename Hightower components to Trebuchet
- Rename npm packages: @shannon/api -> @trebuchet/api, @shannon/worker -> @trebuchet/worker, @keygraph/shannon -> @trebuchet/cli
- Update CLI references from shannon/keygraph to trebuchet/trebuchet
- Update Dockerfile and CLAUDE.md to reflect new package names
- Update TypeScript imports in API to use @trebuchet/worker

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-27 18:24:03 +00:00
Chris Farhood 325eac98ea chore: rebrand farhoodliquor → farhoodlabs, API-only mode, split infra
- Rename org references from farhoodliquor to farhoodlabs in CI workflows
  and GHCR image tags
- Rewrite README for Hightower as API-driven K8s fork of Shannon
- Update CLAUDE.md to reflect API-only deployment model
- Delete docker-compose files (K8s only, no Docker Compose support)
- Delete shannon CLI entry point (API-only going forward)
- Move K8s manifests to farhoodlabs/hightower-infra

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-22 07:19:56 -04:00
Test User 26420d7d1b fix(api): remove MCP server
MCP server is overkill for this use case — all 5 MCP tools are
thin wrappers over the REST API. Paperclip agents should use the
REST API directly with bearer token auth instead.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-21 23:53:04 +00:00
Test User 826b12efdb fix(infra): pin API image to SHA a0efe76 (deliverables persistence fix)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 22:22:06 +00:00
Test User a0efe7604e fix(job-builder): persist deliverables to workspace PVC after pipeline completes
Without --output, copyDeliverables() is skipped after the workflow finishes,
so the final report and all agent deliverables are lost when the emptyDir
volumes are cleaned up on pod exit.

Pass --output pointing to the workspace's deliverables/ subdir on the
workspaces PVC so files survive beyond the pod lifecycle.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 22:16:01 +00:00
Test User b36ad267a4 fix(infra): pin API image to SHA to bypass kubelet latest caching bug
Node mindy caches the :latest tag digest even with imagePullPolicy: Always.
Pinning to the SHA-tagged image forces a fresh pull on pod restart.
This image includes the pentest-user (UID 1001) securityContext fix.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-21 21:27:43 +00:00
Test User 0f75d75eeb fix(job-builder): run worker pod as pentest user (UID 1001) to satisfy Claude Code
Claude Code refuses --allow-dangerously-skip-permissions when running as root,
causing immediate exit with code 1. The worker image defines a "pentest" user
(UID/GID 1001), but K8s job specs override the entrypoint.sh that normally
switches to it. Adding a pod-level securityContext with runAsUser=1001 and
fsGroup=1001 fixes both the root-privilege rejection and PVC write access.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-21 21:15:17 +00:00
Test User df2df16531 fix(worker): create overlay dirs in git-clone init container
The worker container overlay mounts (deliverables, scratchpad,
playwright-cli) failed because /repo is read-only and the overlay
mountpoints at /repo/.shannon/* didn't exist. The init container now
creates these directories after cloning the repo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 15:52:54 +00:00
Test User 3f1552d007 fix(job-builder): remove duplicate lines
Accidentally introduced duplicate content during prior edit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 15:42:13 +00:00
Test User 8937ab42b8 chore: nudge job-builder for fresh CI build
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 15:40:25 +00:00
Test User 7cc72eba61 fix(mcp): sort imports and format MCP server
Biome reported unsorted imports and formatting issues in
apps/api/src/index.ts and apps/api/src/mcp/server.ts.
Auto-fixed via pnpm biome:fix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 15:25:52 +00:00
Test User badda85e60 feat(api): add MCP server for scan management
Add a Model Context Protocol server to apps/api/src/mcp/, exposing
five tools backed by scan-manager.ts:
- start_scan, get_scan, list_scans, cancel_scan, get_report

The MCP server runs on port 3100 (MCP_PORT env var) using
StreamableHTTPServerTransport from @modelcontextprotocol/sdk, alongside
the existing Hono API server.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-21 13:13:43 +00:00
Test User ec210b3c92 fix(infra): restart API deployment and grant RBAC for farh-net agent
Add restart annotation to trigger Flux-driven rollout so the API picks
up the alpine/git init container fix (ef79ca2). Also add a deploy-manager
Role and RoleBinding so the farh-net:farh-net-paperclip SA can manage
deployments in the hightower namespace going forward.

Resolves FAR-112.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-21 12:43:43 +00:00
Chris Farhood b72639e260 fix(infra): add imagePullPolicy Always for API server
Ensures rollout restart pulls the latest image instead of using
the node's cached copy.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-21 08:28:20 -04:00
Chris Farhood ef79ca2e9a fix: use alpine/git for init container instead of bitnami/git
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-21 07:58:46 -04:00
Chris Farhood 60ba428d2b refactor: rename all custom K8s components to hightower
Namespace, Temporal, router, PVCs, labels, and GHCR API image all
renamed from shannon-* to hightower-*. Upstream references preserved:
worker image (ghcr.io/farhoodliquor/shannon), .shannon/ dirs,
@shannon/worker package imports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 09:17:02 -04:00
Chris Farhood 7b16bf98f7 refactor: rename custom components from shannon-* to hightower-*
Renames API server, worker jobs, credentials secret, and workspaces
PVC to use the hightower prefix. Upstream Shannon names (namespace,
Temporal service, package imports, .shannon/ dir) are unchanged.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 09:09:34 -04:00
Chris Farhood 6ecf1a4d4d fix(ci): switch to GHCR (ghcr.io/farhoodliquor) from Docker Hub
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 14:12:53 -04:00
Chris Farhood 1bbdd7acba feat: add K8s API server, orchestrator abstraction, and CI pipeline
- Add apps/api/ — Hono REST API server for managing pentest scans via K8s Jobs
  - POST/GET /api/scans, GET /api/scans/:id, cancel, report endpoints
  - Bearer token auth, Temporal client integration, K8s Job builder
  - Dockerfile, Kustomize manifests (Deployment, Service, RBAC)
- Add CLI orchestrator abstraction (docker.ts → Orchestrator interface)
  - DockerOrchestrator and K8sOrchestrator implementations
  - Backend detection via SHANNON_BACKEND env var or --backend flag
- Add CI workflow: type-check + lint on PR, build+push both images on main
- Switch all workflows to self-hosted runners (runners-farhoodliquor)
- Add shannon-api image build to release and release-beta workflows
- Add root infra/kustomization.yaml as Flux entry point
- Export PipelineProgress from @shannon/worker/pipeline

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 13:08:51 -04:00
Chris Farhood 54c92e8142 feat(infra): add all Kubernetes manifests
- namespace, temporal server, workspaces PVC
- API server deployment, service, serviceaccount, RBAC
- Dev overlay

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 11:25:47 -04:00