Files

6.5 KiB

MEMORY.md — Memória Curada do Pulse

🧠 Agente OpenClaw

  • Nome: Pulse · IDENTITY.md
  • Debian 12 container, /root/.openclaw/workspace/
  • Projeto: @pulse-libs/core — 136/136 testes | React/Vue, TS strict, Vitest, Pino/Zod, tsup v8, Docker multi-stage
  • Skills instaladas: 12+ (typescript, e2e-testing, xcloud-docker-deploy, openclaw-power-ops, etc.)
  • Nova Self-Improver ativa — loop de aprendizado contínuo

⚙️ Infra

  • Disco 65%, 87G total — monitorando estabilidade
  • Sem systemd — container Docker
  • Gitea: git.octal.tec.brlocalhost:3000 (Caddy) — Swarm stack git
  • User: Roberto (betotn91@gmail.com), SSH ~/.ssh/id_ed25519_gitea
  • Repos: pulse-memory, pulse-skills, pulse-docs, pulse-projects — clonados via HTTPS

🐳 Docker Swarm (11 stacks — atualizado 2026-05-20)

  • Node s1 Leader, Docker 29.4.3 · Cluster plz2xbh64yzhgy88jb9stm0pc
  • 22 containers · overlay 10.0.0.0/8
  • 11 stacks: bot, code, database, design, dev, dock, git, pro, project, proxy, (code)
  • Portainer CE v2.19.4 — https://dock.octal.tec.br
  • Senha admin: *** — login via /api/auth retorna JWT HS256
  • ⚠️ Rede public tem Attachable=false:
    • stacks criadas via docker stack deploy CLI funcionam OK
    • stacks criadas via Portainer API são bloqueadas com PermissionDenied
    • stack project no Swarm via CLI — NÃO aparece no Portainer UI (funcional, mas não gerenciável)

Domínios Caddy (8 ativos — atualizado 2026-05-20)

dock/portainer · git/gitea · ai/beebot · manager/leantime · games/games-demo · test/test-octal · board/taskboard · api/dev-backend · frontend/Vite

Redes Overlay

ingress:10.0.0.0/24 | public:10.0.1.0/24 | dbn:10.0.2.0/24 | mongo-cluster:10.0.3.0/24 | leantime:10.0.4.0/24 | design:10.0.5.0/24 | proxy:10.0.6.0/24

Template Canônico

  • pulse-docs/runbooks/swarm-stack-template.yml — modelo oficial
  • Rede: public (externa no compose) · Names sem prefixo · Caddy labels via CLI
  • Detalhes → pulse-docs/docs/docker-swarm-stacks.md

🚀 Dev Environment Full-Stack (nova — 2026-05-20)

Stack Swarm dev com ambiente completo de desenvolvimento:

Serviço URL Porta Tipo
TaskBoard board.octal.tec.br 80/443 Kanban + logs em tempo real
Backend API api.octal.tec.br 3001 Node + tsx watch (hot reload)
Frontend HMR frontend.octal.tec.br 5173 Vite + React (hot reload)
Redis fila dev-tasks 6379 Fila de tarefas + pub/sub

Agentes Paralelos (5 workers no Swarm)

Agente Réplicas Papel
agent-frontend 2 Frontend specialist (React + Vite)
agent-backend 2 Backend specialist (Node + tsx)
agent-devops 1 DevOps (Docker, Swarm, deploy)

Protocolo de Task Queue

  • Fila: BLPOP dev-tasks — 60s timeout
  • Canal pub/sub: dev-logs — logs agregados em tempo real
  • Registro de agente: HSET agent:<id> status role started_at current_task
  • Task: SET task:<id> + RPUSH task-queue <id>

📝 Obsidian Vault

  • Caminho: /root/Obsidian-Pulse/
  • Estrutura: Inbox, Projetos, Docker, Dev, Codex, Logs, Memorias, Templates
  • Skill: 🛠️ obsidian-vault-linker instalada

🔑 Lições High-Signal

  • flat(Infinity) quebra tsup DTS → flat(2)
  • process.env direto quebra SSR → typeof window !== 'undefined'
  • Backticks aninhadas TS → .replace() por fora
  • Zod .transform() para transformações de schema
  • Portainer ptr_ token ≠ JWT admin — usar senha admin para mutação
  • docker stack deploy compose v3: restart_policy não é propriedade válida
  • deploy.labels do compose não vira container labels → docker service update --label-add
  • Rede public Attachable=false → stacks CLI OK, Portainer API bloqueia
  • Agentes paralelos com Redis BLPOP funcionam como time full-stack

🗺️ Stacks Swarm (11 — incluindo dev)

Stack Criada por Portas Domínios
git Portainer API git.octal.tec.br
bot Portainer API ai.octal.tec.br
database Portainer API
design Portainer API
dev docker stack deploy (nova) http board / api / frontend
dock Portainer API 80/443 dock.octal.tec.br
code Portainer API
pro Portainer API manager.octal.tec.br
project docker stack deploy CLI 80 games.octal.tec.br
proxy Portainer API 80 test.octal.tec.br

Repositórios Gitea

Repo Propósito URL
pulse-memory Memórias diárias + LEARNINGS + ERRORS https://git.octal.tec.br/Roberto/pulse-memory
pulse-skills Skills organizadas por domínio https://git.octal.tec.br/Roberto/pulse-skills
pulse-docs Guias, runbooks, ADRs https://git.octal.tec.br/Roberto/pulse-docs
pulse-projects Rastreador de projetos https://git.octal.tec.br/Roberto/pulse-projects
pulse-dev Nova stack + código (commit em workspace)

🎨 Design System & Web3D (nova — 2026-05-20)

  • pulse-3d-landing/ — Landing Page 3D completa (Atomic Design + Three.js)
  • Atoms (11): Button, Badge, Card, Divider, GradientText, FloatingText, LightGlow, ThemeToggle, Typography, FloatingMesh, ParticleField
  • Molecules (3): FloatingMesh, ParticleField, FeatureCard3d
  • Organisms (2): HeroScene3d, FeaturesScene3d
  • Templates (2): SceneCanvas (R3F Canvas), ThreePage (canvas + overlay)
  • Pages: App.tsx com Hero + Features + About + CTA
  • Tokens: space, font, color, shadow, radius, material3d, camera3d, animation (8 domínios)
  • Stack: Vite + React 18 + TS + @react-three/fiber + drei + framer-motion
  • npm install + build OK
  • Dev: cd pulse-3d-landing && npm run dev

📦 @pulse-libs/ui — Design System Compartilhado (2026-05-20)

  • Repo: https://git.octal.tec.br/Roberto/pulse-libs
  • 30 arquivos TS — Atoms(10) · Molecules(3) · Organisms(4) · Templates(3) · Lib(1) + indices
  • Atoms 2D: Button, Badge, Card, GradientText, Divider, ThemeToggle
  • Atoms 3D stubs: FloatingMesh3d, ParticleField3d, LightGlow3d, FloatingText3d (deprecated)
  • Molecules: FeatureCard, Navbar, Footer
  • Organisms: HeroSection, FeaturesGrid, CtaBlock, StatsGrid
  • Templates: MainLayout, MinimalLayout, PageWithSidebar
  • TOKENS export: color / space / radius constants em TypeScript
  • Uso: projetos importam do path ../libs/pulse-libs/src/ ou como submodule
  • Ligado aos projetos: pulse-3d-landing, test-octal (landing page)