{"id":50585008,"url":"https://github.com/sagebynature/team-nexus","last_synced_at":"2026-06-05T05:30:47.661Z","repository":{"id":355532260,"uuid":"1228453240","full_name":"sagebynature/team-nexus","owner":"sagebynature","description":"Dockerized virtual startup team powered by Hermes Agent","archived":false,"fork":false,"pushed_at":"2026-05-12T07:16:03.000Z","size":3346,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T09:23:22.514Z","etag":null,"topics":["agent-orchestration","ai-agents","automation","docker","docker-compose","hermes-agent","mcp","mise","multi-agent","startup"],"latest_commit_sha":null,"homepage":null,"language":"Python","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/sagebynature.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-05-04T03:09:56.000Z","updated_at":"2026-05-12T07:16:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sagebynature/team-nexus","commit_stats":null,"previous_names":["sagebynature/hermes-team","sagebynature/team-nexus"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sagebynature/team-nexus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagebynature%2Fteam-nexus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagebynature%2Fteam-nexus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagebynature%2Fteam-nexus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagebynature%2Fteam-nexus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sagebynature","download_url":"https://codeload.github.com/sagebynature/team-nexus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagebynature%2Fteam-nexus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33932040,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["agent-orchestration","ai-agents","automation","docker","docker-compose","hermes-agent","mcp","mise","multi-agent","startup"],"created_at":"2026-06-05T05:30:47.121Z","updated_at":"2026-06-05T05:30:47.655Z","avatar_url":"https://github.com/sagebynature.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Team Nexus\n\n**A Hermes-native profile-driven software delivery team, containerized and ready to deploy.**\n\nTeam Nexus uses Hermes Agent profiles, Kanban, checkpoints, skills, and a functional Docker runtime. Atlas is the only Discord-facing gateway in v1. Forge, Sentinel, Scribe, and Curator are specialist Hermes profiles dispatched through Kanban.\n\n## Operator quick start\n\nGuided installer from a fresh machine:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/sagebynature/team-nexus/main/scripts/install.sh | bash\n```\n\nManual path inside an existing checkout:\n\n```bash\ncp .env.example .env\n# edit .env; add a model provider key and Atlas Discord settings for gateway use\nmake preflight\nmake build\nmake up\n```\n\nOpen the dashboard after startup:\n\n```text\nhttp://127.0.0.1:${TEAM_NEXUS_DASHBOARD_PORT}\n```\n\nUseful commands:\n\n```bash\nmake validate\nmake compose-config\nmake profile-render-dry-run\nmake profile-render-docker-dry-run\nmake shell PROFILE=forge\nmake profile-permissions-check\nmake doctor PROFILE=atlas\nmake doctor-all\nmake logs SERVICE=atlas-gateway\nmake kanban-dispatcher-once DRY_RUN=1\n```\n\nFlow:\n\n```text\nUser -\u003e Atlas Discord gateway -\u003e Kanban -\u003e specialist profiles -\u003e Atlas -\u003e User\n```\n\n## Key documents\n\n- First-time setup: `GETTING_STARTED.md`\n- Operations runbook: `docs/team-nexus-operations.md`\n- Troubleshooting guide: `TROUBLESHOOTING.md`\n- Discord/Kanban runbook: `docs/discord-kanban-operations.md`\n- Architecture plan: `docs/architecture/profile-driven-team-nexus.md`\n- ADR: `docs/adr/0014-profile-driven-team-nexus.md`\n- Migration inventory: `docs/migration/profile-driven-runtime-inventory.md`\n- Profile specs: `profiles/team-nexus.profiles.yaml`\n- Profile schema notes: `shared/config/profile-spec-schema.md`\n- Profile Compose runtime: `docker-compose.profiles.yml`\n\n## V1 profile roster\n\n| Profile  | Mission                                                              |\n| -------- | -------------------------------------------------------------------- |\n| Atlas    | Mission intake, routing, Kanban task graph, Discord-facing synthesis |\n| Forge    | Software implementation in task worktrees, tests, commits, draft PRs |\n| Sentinel | Code review, QA, security, and ship/no-ship verdicts                 |\n| Scribe   | Docs, ADRs, changelog, and PR narrative                              |\n| Curator  | Learning governance, repo-visible skills/docs/profile updates        |\n\nPlanned later profiles: Scout, Ops, and Relay. Worker Discord gateway settings are represented in the profile spec but disabled by default.\n\n## Runtime model\n\nThe default Docker runtime uses one image and function services from `docker-compose.profiles.yml`:\n\n| Service             | Purpose                                                 |\n| ------------------- | ------------------------------------------------------- |\n| `atlas-gateway`     | Atlas Discord gateway and native Kanban dispatcher host |\n| `dashboard`         | Light Team Nexus inspection/control plane               |\n| `admin-shell`       | Operator shell using a selected profile home            |\n| `kanban-dispatcher` | Optional one-shot native dispatcher nudge               |\n\nMounts:\n\n```text\nruntime/hermes             -\u003e /opt/data\nrepo root                  -\u003e /workspace (control repo; intentional edits only)\nruntime/hermes/workspaces  -\u003e /workspaces (ignored per-profile scratch cwd)\nshared/skills              -\u003e /shared/skills:ro\nshared/mcp                 -\u003e /shared/mcp:ro\nshared/plugins              -\u003e /opt/data/plugins:ro and /opt/data/profiles/\u003cactive\u003e/plugins:ro\nshared/dashboard-themes    -\u003e /opt/data/dashboard-themes:ro and /opt/data/profiles/\u003cactive\u003e/dashboard-themes:ro\n```\n\nGoogle Workspace CLI credentials use `GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE`.\nA safe Docker-mode setup is:\n\n```bash\nmkdir -p runtime/hermes/secrets\ncp /path/to/your/google-credentials.json runtime/hermes/secrets/google-workspace-credentials.json\nprintf '\\nGOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/opt/data/secrets/google-workspace-credentials.json\\n' \u003e\u003e .env\n```\n\nThe custom Docker image installs `gws`, and the upstream `googleworkspace/cli`\nagent skills are vendored under `shared/skills/` so all profiles can load them\nthrough the shared `/shared/skills` external skill directory.\n\n`runtime/` is ignored because it may contain profile-local `.env`, auth, sessions, memory, logs, checkpoints, Kanban state, credentials, per-profile scratch workspaces, and other user/customer data.\n\n`/workspace` is the Team Nexus control repository. Profiles default their terminal cwd to `/workspaces/\u003cprofile\u003e` so ad-hoc scratch files do not dirty the repo. Use `/workspace` explicitly for intentional Team Nexus source/docs/config edits, and use Kanban `workspace: scratch` or task-specific worktrees for delegated work.\n\n## Profile generation\n\nCanonical input:\n\n```text\nprofiles/team-nexus.profiles.yaml\nprofiles/\u003cprofile\u003e/{SOUL.md,AGENTS.md,config.yaml}\nshared/profile/AGENTS.base.md\nshared/skills/manifests/\n```\n\nPreview generated files:\n\n```bash\nmake profile-render-dry-run\nmake profile-render-docker-dry-run\n```\n\nStage Docker-mode profile files into ignored runtime state:\n\n```bash\nmake profile-render\n```\n\nValidate:\n\n```bash\nmake validate\nmake compose-config\nmake preflight\n```\n\n`make preflight` runs profile validation, Python compile checks, host/Docker render dry-runs, Compose config validation, and Docker runtime staging.\n\n## Knowledge and learning policy\n\n- Durable architecture/rationale belongs in docs and ADRs.\n- Active role/workflow instructions belong in profile specs and generated `AGENTS.md`.\n- Reusable procedures belong in repo-visible skills.\n- Hermes memory is for compact stable facts only, not task progress or long workflows.\n- Curator promotes reusable learnings into repo-visible artifacts.\n- Significant workflow, safety, role, or permission changes require review.\n\n## Safety policy\n\n- Forge, Sentinel, Scribe, Curator, and future Ops profiles have checkpoints enabled.\n- Git worktrees and commits remain the primary software-delivery safety model.\n- Checkpoints are rollback safety nets, not a replacement for Git.\n- No generated bootstrap should overwrite secrets, auth, sessions, memory, logs, checkpoint data, or live Kanban DBs.\n\n## Secrets policy\n\n- Commit `.env.example`, never real secrets.\n- Docker mode loads repo-root `.env` through Compose.\n- Add at least one model provider key for live agent runs, usually `OPENROUTER_API_KEY`.\n- Atlas Discord settings are required for v1 gateway use: `DISCORD_BOT_TOKEN`, `DISCORD_ALLOWED_USERS`, and `DISCORD_HOME_CHANNEL`.\n- Worker Discord tokens are optional future fields and disabled by default.\n- Do not copy secrets broadly between profiles without explicit operator action.\n\n## Make targets\n\nCore:\n\n```bash\nmake preflight\nmake build\nmake up\nmake down\nmake restart\nmake ps\nmake logs SERVICE=atlas-gateway\nmake shell PROFILE=forge\nmake doctor PROFILE=atlas\nmake doctor-all\n```\n\nKanban:\n\n```bash\nmake kanban-init\nmake kanban-list\nmake kanban-stats\nmake kanban-watch\nmake kanban-create TITLE='...' ASSIGNEE=forge CONVERSATION_ID=mission_slug BODY='...'\nmake kanban-dispatcher-once DRY_RUN=1\nmake kanban-notifier-once\nmake kanban-notifier-dry-run\n```\n\nMCP:\n\n```bash\nmake mcp-list PROFILE=atlas\nmake mcp-register-template PROFILE=forge SERVER=filesystem-workspace\nmake mcp-register-template-all SERVER=filesystem-workspace TARGET_AGENTS='atlas forge'\n```\n\n## Migration note\n\nThe old generated per-agent Docker Compose runtime has been removed from the active repo path. Profiles are now the identity boundary; Docker services are functional runtime processes. `shared/team-agents.yaml`, `scripts/team_registry.py`, generated per-agent Compose files, nginx dashboard fan-out, and the Compose-aware Kanban dispatcher are superseded by `profiles/team-nexus.profiles.yaml`, `docker-compose.profiles.yml`, and native/profile-driven Kanban dispatch.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagebynature%2Fteam-nexus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsagebynature%2Fteam-nexus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagebynature%2Fteam-nexus/lists"}