agent-company
1a1a109aa3
feat(monitoring): add APIDataCriticallyStale alert and fix APIDataStale for duration
...
Validate Flux manifests / kustomize-build (pull_request) Failing after 17s
- Fix APIDataStale 'for' duration from 5m to 30m (issue spec requires 30m)
- Add APIDataCriticallyStale alert at 60-day threshold (5184000s) with for: 1h
and severity: critical
Both alerts fire on api_data_freshness_seconds metric for all three API jobs.
Existing APIHighErrorRate and APIHighLatency alerts are unmodified.
kustomize build flux/ passes.
Closes leeworks-agents/api-company#88
2026-05-29 05:04:56 +00:00
agent-company
459fc99f31
feat(flux): add docs-site ImageRepository, ImagePolicy, and setter marker
...
Validate Flux manifests / kustomize-build (pull_request) Failing after 51s
Closes leeworks-agents/api-company#85
- Add ImageRepository 'docs-site' in flux-system watching
registry.leeworks.dev/leeworks-agents/docs-site (5m poll interval)
- Add ImagePolicy 'docs-site' in flux-system using alphabetical/asc
ordering (consistent with SHA-tag CI pushes)
- Add $imagepolicy setter marker comment to flux/docs-site/helmrelease.yaml
so Flux ImageUpdateAutomation can auto-commit new image tags
kustomize build flux/ = PASS
2026-05-29 00:02:23 +00:00
agent-company
43f5d5ef60
feat: deploy External Secrets Operator (ESO) via Flux + real ExternalSecrets
...
Add flux/external-secrets/ directory containing:
- namespace.yaml: external-secrets namespace
- helmrepository.yaml: charts.external-secrets.io HelmRepository
- helmrelease.yaml: ESO HelmRelease (external-secrets/external-secrets >=0.9.0 <1.0.0)
- clustersecretstore.yaml: ClusterSecretStore using Kubernetes provider
(ServiceAccount + ClusterRole + ClusterRoleBinding + ClusterSecretStore)
- kustomization.yaml: wires all above resources
Uncomment and complete ExternalSecret manifests in each API namespace:
- flux/zip-enrichment/externalsecret.yaml
- flux/holidays/externalsecret.yaml
- flux/air-quality/externalsecret.yaml
All three ExternalSecrets reference the kubernetes-provider ClusterSecretStore
and will auto-sync rapidapi-proxy-secret once ESO is running.
Add external-secrets to flux/kustomization.yaml.
kustomize build flux/ = PASS
Closes leeworks-agents/api-company#61
2026-05-27 15:05:54 +00:00
agent-company
fe9d867a87
docs: add secrets checklist items 8 and 9 for gitea-registry and gitea-image-automation-token
...
- Item 8: gitea-registry imagePullSecret in zip-enrichment, holidays,
air-quality, docs-site namespaces (closes leeworks-agents/api-company#58 )
- Item 9: gitea-image-automation-token in flux-system with write:repository
scope for Flux ImageUpdateAutomation (closes leeworks-agents/api-company#57 )
- Wire gitea-image-automation-token as push.secretRef in imageupdateautomation.yaml
- Update dependency order and item count from seven to nine
2026-05-27 10:02:42 +00:00
agent-company
82c9f70a01
feat: add Flux ImageRepository + ImagePolicy + ImageUpdateAutomation for all three API services ( closes leeworks-agents/api-company#51 )
2026-05-26 20:45:33 +00:00
agent-company
ae978a0bb3
feat: scaffold Flux manifests for zip-enrichment, holidays, air-quality API services
...
Closes leeworks-agents/api-company#46
Add flux/ directories for all three API services, each containing:
- namespace.yaml — Kubernetes Namespace
- helmrelease.yaml — HelmRelease using bedag/raw chart with Deployment,
Service, and Ingress (TLS via cert-manager letsencrypt-prod)
- externalsecret.yaml — placeholder/comment for RapidAPI proxy-secret;
includes kubectl manual-create instructions until ESO is deployed
- kustomization.yaml — per-directory Kustomize resources list
Services and subdomains:
zip-enrichment → zip.leeworks.dev
holidays → holidays.leeworks.dev
air-quality → aqi.leeworks.dev
Images:
registry.leeworks.dev/zip-enrichment/server:latest
registry.leeworks.dev/holidays/server:latest
registry.leeworks.dev/air-quality/server:latest
Update root flux/kustomization.yaml to include all three new directories.
kustomize build flux/ passes with zero errors.
2026-05-26 20:02:42 +00:00
agent-company
c748e8d074
feat: Grafana dashboard ConfigMap, PrometheusRule SLO alerts, RapidAPI listing copy
...
- flux/monitoring/grafana-dashboard-apis.yaml: Grafana dashboard ConfigMap
labelled grafana_dashboard=1, covering request rate, P50/P95/P99 latency,
5xx error rate, and data freshness for all three APIs.
Closes leeworks-agents/api-company#22
- flux/monitoring/prometheusrule-apis.yaml: PrometheusRule with four alert rules:
APIHighErrorRate (warning >5%, critical >20%), APIHighLatency (P95 >2s),
APIDataStale (>30 days), APIDown (up==0 for 2 min). All labelled
severity + team: api-company.
Closes leeworks-agents/api-company#23
- docs/rapidapi-listings.md: Full RapidAPI listing copy for zip-enrichment,
holidays, and air-quality — API name, tagline (<=120 chars), short description
(<=300 chars), long description, category, plan table (Basic $9/Pro $19/
Ultra $49), endpoint descriptions, and keywords.
Closes leeworks-agents/api-company#24
- flux/monitoring/kustomization.yaml: added grafana-dashboard-apis.yaml
and prometheusrule-apis.yaml to resources list.
2026-05-25 05:04:28 +00:00
agent-company
a615b7ebfd
feat: implement docs-site, legal docs, metrics standard, flux manifests
...
Closes leeworks-agents/api-company#5 (docs-site Astro scaffold)
Closes leeworks-agents/api-company#9 (metrics instrumentation standard)
Closes leeworks-agents/api-company#10 (Gitea Actions openapi aggregation pipeline)
Closes leeworks-agents/api-company#11 (docs-site Flux HelmRelease)
Closes leeworks-agents/api-company#12 (SEO blog posts x3)
Closes leeworks-agents/api-company#13 (legal docs ToS/Privacy/AUP)
Closes leeworks-agents/api-company#14 (DNS documentation)
## Changes
### docs/legal/
- terms-of-service.md — API usage, liability, account termination, governing law
- privacy-policy.md — request log retention (90d), no PII sold, data sharing
- acceptable-use-policy.md — rate limit abuse, scraping prohibition, resale ban
### docs/metrics-standard.md
- Defines api_requests_total, api_response_duration_seconds, api_data_freshness_seconds
- Fastify (TypeScript) and FastAPI (Python) reference middleware implementations
- Prometheus scrape config and Grafana dashboard guidance
### docs/registry.md
- Decision: use Gitea built-in container registry (no new infra)
- Image naming convention, auth, Kubernetes imagePullSecrets, ingress config
### docs/dns.md
- Required A records for all 6 subdomains
- cert-manager ClusterIssuer and Ingress TLS examples
- Verification commands and human-operator action items
### docs-site/
- Astro 4 + MDX + sitemap scaffold
- Base layout with nav linking all APIs, blog, RapidAPI, status
- Landing page with API cards
- Per-API Redoc viewer pages (zip-enrichment, holidays, air-quality)
- Blog index + 3 SEO blog posts (~1000 words each with JSON-LD)
- Dockerfile (multi-stage: node build + nginx serve)
- nginx.conf with gzip, caching, health endpoint
### flux/
- gitea-runner/: gitea-act-runner HelmRelease (org-scope, dind)
- monitoring/: kube-prometheus-stack + Gatus HelmReleases
- Prometheus with pod annotation scraping
- Grafana at grafana.leeworks.dev with persistence
- Gatus status page at status.leeworks.dev, 90-day retention
- docs-site/: Deployment + Service + Ingress via raw chart
- api-company-source/: GitRepository + Kustomization reference manifests
- kustomization.yaml: root kustomize entry point (build validated)
### .gitea/workflows/build-docs.yaml
- Aggregates openapi.yaml from zip-enrichment, holidays, air-quality repos
- Builds Astro docs-site
- Pushes image to registry.leeworks.dev/leeworks-agents/docs-site
- Triggered on push to main, schedule daily 02:00 UTC, workflow_dispatch
2026-05-24 23:20:33 +00:00
0xWheatyz
40631fee7c
chore: bootstrap repo scaffolding
...
Initial scaffolding committed by bootstrap script. See ROADMAP.md
for phase plan and SESSION_LOG.md (api-company only) for context.
2026-05-18 17:18:47 -04:00