{"id":49328805,"url":"https://github.com/rajsinghtech/openclaw-workspace","last_synced_at":"2026-04-26T21:04:01.482Z","repository":{"id":337497317,"uuid":"1153230598","full_name":"rajsinghtech/openclaw-workspace","owner":"rajsinghtech","description":"OpenClaw Workspace for Raj","archived":false,"fork":false,"pushed_at":"2026-04-24T21:25:53.000Z","size":295,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-24T23:25:39.430Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rajsinghtech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-09T04:02:34.000Z","updated_at":"2026-02-21T18:23:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rajsinghtech/openclaw-workspace","commit_stats":null,"previous_names":["rajsinghtech/openclaw-workspace"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rajsinghtech/openclaw-workspace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajsinghtech%2Fopenclaw-workspace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajsinghtech%2Fopenclaw-workspace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajsinghtech%2Fopenclaw-workspace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajsinghtech%2Fopenclaw-workspace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rajsinghtech","download_url":"https://codeload.github.com/rajsinghtech/openclaw-workspace/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajsinghtech%2Fopenclaw-workspace/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32312507,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T19:15:34.056Z","status":"ssl_error","status_checked_at":"2026-04-26T19:15:15.467Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-26T21:04:01.410Z","updated_at":"2026-04-26T21:04:01.473Z","avatar_url":"https://github.com/rajsinghtech.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenClaw Workspace\n\nGitOps-managed deployment of OpenClaw — builds two images, deploys via Flux.\n\n\u003e **Quick Config Reference**: See [`kustomization/CONFIG.md`](kustomization/CONFIG.md) for Kubernetes-specific configuration details including Flux escaping, cron jobs, and agent setup.\n\n## Images\n\n| Image | Purpose |\n|-------|---------|\n| `oci.killinit.cc/openclaw/openclaw` | Agent runtime with CLI tools (kubectl, flux, helm, etc.) |\n| `oci.killinit.cc/openclaw/workspace` | Static content (skills, docs, config) |\n\n## Architecture\n\n```\nGitHub Actions ──► Zot Registry ──► Flux ──► Kubernetes\n                                         │\n               ┌─────────────────────────────────────────────┐\n               │ Pod: openclaw (namespace: openclaw)       │\n               │ ├── init-workspace → copies ImageVolume     │\n               │ ├── openclaw → main agent                   │\n               │ └── tailscale → mesh networking             │\n               └─────────────────────────────────────────────┘\n```\n\n## Structure\n\n```\n.github/workflows/       # CI builds\nkustomization/           # K8s manifests (Flux-managed)\n  ├── CONFIG.md        # Kubernetes-specific configuration guide\n  ├── openclaw.json    # OpenClaw config (see CONFIG.md for Flux escaping)\n  └── cron-jobs.json   # Cron job definitions\nworkspaces/main/         # Main agent workspace (skills, docs, persona)\nworkspaces/morty/        # Morty ops sub-agent workspace\nworkspaces/leon/         # Leon coding expert workspace\nworkspaces/dyson/        # Dyson multi-cluster monitor workspace\nworkspaces/robert/       # Robert cron reviewer workspace\nDockerfile.openclaw      # Agent image (runtime + CLI tools)\nDockerfile.workspace     # Content-only image (all workspaces)\n```\n\n## Flux Variable Escaping\n\nWhen using Flux CD, environment variable references like `${API_KEY}` must be escaped as `$${API_KEY}` in `openclaw.json`. Flux leaves `$${VAR}` as `${VAR}` at runtime, which OpenClaw then substitutes from environment variables.\n\nSee [`kustomization/CONFIG.md`](kustomization/CONFIG.md) for full details.\n\n## Build Notes\n\nZot registry **rejects `docker push`** — CI uses `skopeo copy`:\n\n```\nbuild-push-action → .tar → skopeo copy → crane index append\n```\n\n## Deployment\n\nFlux watches `./kustomization/` and auto-applies:\n- Variable substitution from ConfigMaps/Secrets\n- SOPS decryption with PGP key `FAC8E7C3A2BC7DEE58A01C5928E1AB8AF0CF07A5`\n\n## Agents\n\n| Agent | ID | Role | Model | Workspace |\n|-------|----|----|------|-----------|\n| Main | `main` | Discord chat, heartbeat, cluster ops | MiniMax M2.5 | `workspaces/main/` |\n| Morty | `morty` | Ops agent — config audit, manifest fixes | MiniMax M2.5 | `workspaces/morty/` |\n| Dyson | `dyson` | Multi-cluster monitor — heartbeat every 30m | MiniMax M2.5 | `workspaces/dyson/` |\n| Robert | `robert` | Cron reviewer — daily session analysis, PRs | MiniMax M2.5 | `workspaces/robert/` |\n| Leon | `leon` | Coding expert — code review, debugging, architecture, OpenSpec | MiniMax M2.5 | `workspaces/leon/` |\n\n## Skills\n\n| Skill | Use case |\n|-------|----------|\n| `flux-debugging` | Reconcile failures, SOPS errors |\n| `pod-troubleshooting` | CrashLoopBackOff, OOM |\n| `gitops-deploy` | Full deploy pipeline |\n| `zot-registry` | Registry issues |\n\n## Commands\n\n```bash\n# Force sync\nflux reconcile kustomization openclaw --with-source\n\n# Check status\nkubectl get pods -n openclaw\nkubectl logs -l app=openclaw -n openclaw\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajsinghtech%2Fopenclaw-workspace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frajsinghtech%2Fopenclaw-workspace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajsinghtech%2Fopenclaw-workspace/lists"}