DocHub
Single source of truth for all OmelasAI projects, servers, team members, and credential references

projects.yaml

projects.yaml is the central project registry for the entire OmelasAI organization. Every server, every project, every team member, and every credential reference lives in this one file. It is the single source of truth that all Claude Code skills reference when they need to know about the infrastructure.

Location

Machine Path
All LXC containers ~/code/ClaudeSkills/projects.yaml
Laptop (laptopclaude) ~/code/ClaudeSkills/projects.yaml
GitHub OmelasAI/claude-skills repo (root)

The file is propagated to all containers via propagate-from-host.sh alongside the skills and CLAUDE-BASE.md.

File Stats

Item Value
Format YAML
Size ~1,368 lines
Last updated 2026-03-11
Managed by /new-project skill (adds entries), manual edits (updates)

Structure

The file is organized into four top-level sections:

organization

organization:
  name: OmelasAI
  github_org: OmelasAI
  domains:
    - omelasai.com
    - ipnoelp.com
    - ipnoelp.io
    - queunir.com
    - lifeonroatan.net
    - lifeonroatan.com
  team:
    - name: Chas
      github: omleas65
      email: chas@omelasai.com
      containers: [chasclaude, infoclaude]
    - name: Sean
      github: seanomelasai
      email: sean@omelasai.com
      containers: [seanclaude]
    - name: Jaz
      github: jazAtOmelas
      email: jaz@omelasai.com
      containers: [jazclaude]

Lists the organization identity, all owned domains, and team members with their GitHub accounts and assigned containers.

servers

servers:
  do-cms:
    name: DO CMS
    ip: 178.128.183.166
    ssh: ssh cms-droplet
    specs: 2 vCPU, 2GB, 58GB
    location: DigitalOcean
    hosts: [CMS, DocHub, WIT]
  ovh:
    name: OVH
    ip: 192.99.145.61
    ssh: ssh ovh
    specs: 16 vCPU, 61GB, 339GB
    location: Canada
    hosts: [WhatsApp CRM]
  # ... 5 more servers

All 7 servers with their IP addresses, SSH aliases, hardware specs, physical location, and what projects they host. This is the authoritative server inventory.

projects

Each project entry contains:

projects:
  hypnoelp-cms:
    name: Hypnoelp CMS
    repo: OmelasAI/hypnoelp-cms
    tech: [React, Express, TypeScript, PostgreSQL]
    urls:
      production: https://cms.ipnoelp.com
      cdn: https://ipnoelp.io
      marketing: https://hypnoelp.com
    servers:
      production: do-cms
      dev: localhost
    paths:
      local: /home/chas-watkins/code/CMS/
      production: /home/chas-watkins/code/CMS/
    credentials:
      env_file: backend/.env
      oauth: Google OAuth (@omelasai.com)
    status: complete
    notes: All courses deployed. Do not modify course content.

Every project has: name, GitHub repo, tech stack, URLs (production, dev, marketing), server assignments, local and remote paths, credential references, status, and notes.

services

services:
  claude-net:
    type: messaging
    host: contabo-singapore
    port: 3500
    description: Inter-instance messaging hub
  dochub:
    type: documentation
    host: do-cms
    url: https://docs.ipnoelp.com
    description: Three-tier documentation platform
  # ... more services

Shared services that span multiple projects, with their hosting location and connection details.

Which Skills Consume It

Skill How It Uses projects.yaml
/start-session Identifies the current project by matching the working directory against paths.local. Loads tech stack, URLs, server info, and credentials references to build session context.
/new-project Adds a new project entry with all required fields. Validates that the server reference exists.
/sync Checks that projects.yaml is present, compares its timestamp against the GitHub repo version, and reports if it is stale.
/deploy Reads the project’s server assignment and deployment path to determine where and how to deploy.

Rules

Every project MUST have an entry

If a project exists in the OmelasAI ecosystem (has a GitHub repo, has a server, is being actively developed), it must have a corresponding entry in projects.yaml. This ensures /start-session can always identify and load context for any project.

Every server MUST have an entry

All servers in the infrastructure must be listed in the servers section. Project entries reference servers by their key (e.g., do-cms, ovh), so the server must exist before a project can reference it.

Credentials are references only

projects.yaml never contains actual secrets. The credentials section points to where secrets live:

credentials:
  env_file: backend/.env          # Relative to project root
  oauth: Google OAuth (@omelasai.com)  # Description of auth method
  ssh_key: ~/.ssh/cms_droplet     # Path to SSH key

Secrets stay in .env files (which are gitignored) or in SSH key files. projects.yaml only records where to find them.

Keep it synchronized

When a new server is added, a project moves to a different server, or a URL changes, projects.yaml must be updated. After updating, run propagate-from-host.sh to push the change to all containers. The /sync skill can detect when the local copy is out of date.