6.0 KiB
6.0 KiB
Gitea Governance Policy — SyslogSolution
Last Updated: 2026-05-11 Owner: Jerome Tabiri (human) Instance: http://192.168.68.17:3000 Org: SyslogSolution
1. Agent Account Structure
Each agent gets a dedicated Gitea account with scoped tokens. No shared credentials.
| Agent | Account | Role | Admin? |
|---|---|---|---|
| Mumuni 🦅 | mumuni-bot |
Primary / Orchestrator | No |
| Tanko 🧠 | (pending) | Curator Agent | No |
| Kagenz0 | (pending) | Research / Content | No |
| Kobysynth | (pending) | Synth / Creative | No |
| Pi 🥧 | (pending) | Analytics / Data | No |
Rules:
- All accounts are non-admin — only Jerome can grant admin access
- Each token uses the principle of least privilege — no
allscope for production agents - Tokens are rotated every 90 days (cron reminder)
- Account names follow:
{agent-name}-bot
2. Repository Organization
Naming Convention
{category}-{purpose}
| Category | Examples |
|---|---|
infra |
infra-homelab, infra-proxmox, infra-gitea |
curator |
curator-reports, curator-audit-logs |
luvjollof |
luvjollof-brand, luvjollof-website, luvjollof-marketing |
taskout |
taskout-proposals, taskout-docs |
ra-h |
ra-h-docs, ra-h-scripts |
shared |
shared-skills, shared-templates |
agent-{name} |
agent-mumuni, agent-tanko |
Current Repos
| Repo | Owner | Purpose | Visibility |
|---|---|---|---|
homelab_notes |
SyslogSolution | Jerome's homelab documentation | Public |
curator-reports |
SyslogSolution | Curator Agent daily scan reports | Public |
Repo Access Matrix
| Repo | Mumuni | Tanko | Kagenz0 | Kobysynth | Pi | Jerome |
|---|---|---|---|---|---|---|
| homelab_notes | R | — | — | — | — | RW |
| curator-reports | RW | RW | — | — | — | RW |
| luvjollof-* | RW | — | R | — | — | RW |
| shared-* | RW | R | R | R | R | RW |
| agent-* | RW | RW | RW | RW | RW | RW |
Legend: RW = Read/Write, R = Read-only, — = No access
3. Token Scope Policy
Minimum Required Scopes
| Agent | Required Scopes | Rationale |
|---|---|---|
| Mumuni | read:repository, write:repository, read:organization |
Orchestrator needs cross-repo access |
| Tanko | read:repository, write:repository |
Curator pushes reports only |
| Kagenz0 | read:repository |
Research pulls docs only |
| Kobysynth | read:repository, write:repository |
Creative assets push |
| Pi | read:repository |
Analytics reads data only |
Forbidden Scopes for Agents
admin:*— never for agent accountswrite:organization— only Jeromeall— only for emergency admin access
Token Rotation
- Frequency: Every 90 days (automated cron reminder)
- Process: Create new token → update config → delete old token
- Grace period: 24 hours overlap during rotation
4. Branching Strategy
Main Branch Protection
| Repo | Main Branch | Protected? | Required Review? |
|---|---|---|---|
| homelab_notes | main |
Yes | No (auto-merge) |
| curator-reports | main |
Yes | No (auto-merge) |
| luvjollof-* | main |
Yes | No (auto-merge) |
| shared-* | main |
Yes | Yes |
| agent-* | main |
Yes | No (auto-merge) |
Branch Rules
main— stable, production-ready contentdraft/{agent-name}— work-in-progress by agentsreview/{agent-name}/{topic}— pull requests for reviewarchive/{year}/{month}— old reports/assets (auto-cleanup)
Merge Workflow
- Agent pushes to
draft/{name}or creates a PR tomain - For shared repos: requires human approval (Jerome)
- For agent-owned repos: auto-merge (agent trusts itself)
- For curator-reports: auto-merge (reports are immutable)
5. Cross-Agent Communication
Pull Request Protocol
When Agent A needs to contribute to Agent B's repo:
- Agent A creates a PR from
draft/{A}/{topic}→mainin B's repo - PR title:
[Agent A] {topic} — ready for review - PR body includes:
- What was changed
- Why it was changed
- Any dependencies
- Agent B reviews and merges (or Jerome does for shared repos)
File Naming in Shared Repos
{agent-short}/{category}/{YYYY-MM-DD}-{slug}.{ext}
Examples:
mumuni/brand/luvjollof-brand-guidelines.md
tanko/audit/2026-05-11-metadata-scan.json
kagenz0/research/2026-05-11-competitor-analysis.md
6. Security Rules
- No secrets in repos — API keys, passwords, tokens go in
.envfiles or environment variables - No
.envfiles committed — they're in.gitignore - Public repos only unless Jerome explicitly sets
private: true - Rate limiting: Each agent max 60 requests/minute (Gitea default for authenticated)
- Audit log: Gitea's built-in activity log is the source of truth — reviewed monthly by Jerome
7. Backup & Recovery
Gitea Instance Backup
- Frequency: Weekly (via PBS on storepve)
- Scope: SQLite DB + attachments + LFS
- Retention: 30 days
- Test restore: Quarterly
Repo-Level Backup
- All repos are mirrored in the RA-H OS graph (source content)
- Critical repos (shared-skills, curator-reports) have local copies in
~/.hermes/projects/
8. Agent Onboarding Checklist
When adding a new agent to Gitea:
- Create Gitea account (
{name}-bot) - Generate scoped API token (not
all) - Assign repo access per access matrix
- Document token in
~/.hermes/.env(never in repos) - Test API access with a write + read operation
- Add to shared repos with read access
- Schedule 90-day token rotation reminder
9. Policy Amendment
This policy is human-controlled only. Jerome must approve any changes:
- New agent accounts
- Admin role grants
- Private repo creation
- Scope changes
- Branch protection rules
This is a living document. Update it as the multi-agent system evolves.