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>
This commit is contained in:
2026-04-22 07:19:56 -04:00
parent 0013776646
commit 325eac98ea
19 changed files with 110 additions and 1453 deletions
-62
View File
@@ -1,62 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: hightower-api
namespace: hightower
labels:
app: hightower-api
spec:
replicas: 1
selector:
matchLabels:
app: hightower-api
template:
metadata:
labels:
app: hightower-api
annotations:
kubectl.kubernetes.io/restartedAt: "2026-04-21T22:21:00Z"
spec:
serviceAccountName: hightower-api
containers:
- name: api
image: ghcr.io/farhoodliquor/hightower-api:sha-a0efe7604ebc2f27cc37ee88f117ae619e57003f
imagePullPolicy: Always
ports:
- containerPort: 3000
name: http
env:
- name: TEMPORAL_ADDRESS
value: hightower-temporal:7233
- name: WORKER_IMAGE
value: ghcr.io/farhoodliquor/shannon:latest
- name: K8S_NAMESPACE
value: hightower
envFrom:
- secretRef:
name: hightower-credentials
volumeMounts:
- name: workspaces
mountPath: /app/workspaces
livenessProbe:
httpGet:
path: /healthz
port: 3000
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
httpGet:
path: /readyz
port: 3000
initialDelaySeconds: 10
periodSeconds: 10
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 256Mi
volumes:
- name: workspaces
persistentVolumeClaim:
claimName: hightower-workspaces
-7
View File
@@ -1,7 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
- serviceaccount.yaml
- rbac.yaml
-53
View File
@@ -1,53 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: hightower-api
namespace: hightower
rules:
- apiGroups: ["batch"]
resources: ["jobs"]
verbs: ["create", "get", "list", "delete", "watch"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: hightower-api
namespace: hightower
subjects:
- kind: ServiceAccount
name: hightower-api
namespace: hightower
roleRef:
kind: Role
name: hightower-api
apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: hightower-deploy-manager
namespace: hightower
rules:
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list", "watch", "update", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: farh-net-deploy-manager
namespace: hightower
subjects:
- kind: ServiceAccount
name: farh-net-paperclip
namespace: farh-net
roleRef:
kind: Role
name: hightower-deploy-manager
apiGroup: rbac.authorization.k8s.io
-12
View File
@@ -1,12 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: hightower-api
namespace: hightower
spec:
selector:
app: hightower-api
ports:
- name: http
port: 3000
targetPort: 3000
-5
View File
@@ -1,5 +0,0 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: hightower-api
namespace: hightower
@@ -1,16 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
patches:
- patch: |-
apiVersion: apps/v1
kind: Deployment
metadata:
name: hightower-api
spec:
template:
spec:
containers:
- name: api
imagePullPolicy: Never