AI Agent Container Infrastructure

말하면,
달이 움직인다.

"PR 리뷰 에이전트 배포해줘" 한 마디면
스킬 등록, 훅 연결, 컨테이너 기동까지 달이 알아서 합니다.

dalforge — acme/backend-api
connected
DAL = CLI + SKILL + HOOK + PLAYER + VAULT

달 하나엔 전부 들어있다

달(dal)은 레포에 귀속된 AI 에이전트 인스턴스입니다. 도구·스킬·훅·PLAYER·시크릿이 하나의 단위로 선언되고, 각각 고유 ID로 관리됩니다.

CLI
명령줄 도구
달 인스턴스 자체. join 시 발급. cloud hub 패키지 설치.
DAL:CLI:uuid8
SKILL
에이전트 스킬
export 시 ~/.claude/skills/ 또는 ~/.codex/skills/ 로 심링크.
DAL:SKILL:uuid8
HOOK
이벤트 훅
pre-commit, post-push. settings.json 에 자동 병합 등록.
DAL:HOOK:uuid8
PLAYER
실행 AI 에이전트
LXC 컨테이너 안에서 동작하는 claude / codex / gemini.
DAL:PLAYER:uuid8
VAULT
시크릿 금고
AES-256-GCM 암호화. 컨테이너 기동 시 환경변수 자동 주입.
SecretVault · SQLite
dalcenter export — 스킬·훅을 AI 런타임 홈으로 심링크
Source
.dalfactory/
skills/code-review/
hooks/pre-commit.sh
Type
symlink
+ settings.json merge
Runtime target
~/.claude/skills/code-review/
~/.claude/hooks/pre-commit.sh
~/.codex/skills/code-review/
Read Across dalsoop Repositories

레포는 달라도, 운영 철학은 하나입니다

dalcenter, ai-gaya, obsidian-center, mac-host-commands, dal-qa-team, daltalk를 포함한 dalsoop 레포들을 훑어보면 공통적으로 보이는 태도가 있습니다. 상태는 선언되고, 시스템은 시간을 따라 돌봄을 수행하고, 사람이 반복해야 할 일은 점점 한 문장이나 한 커맨드로 접혀갑니다.

Principle 01
선언은 git에, 실행은 런타임에
dalcenterobsidian-center에서 반복해서 드러나는 건 템플릿과 규칙은 버전 관리 안에 두고, 실제 실행과 반영은 별도의 라이프사이클 매니저가 맡는 구조입니다. 코드든 노트든 먼저 선언하고, 시스템이 그 선언을 살아 있게 만듭니다.
Principle 02
좋은 시스템은 상태를 기억하고 잠들 줄 안다
ai-gaya는 감정을 순간 반응이 아니라 누적, replay, prune, sleep으로 다루고 있습니다. 이 페이지의 달도 같은 철학을 따릅니다. 에이전트는 stateless worker가 아니라 깨어 있고, 잠들고, 다시 동기화되는 존재입니다.
Principle 03
반복 노동은 명령이 아니라 환경이 먹어야 한다
mac-host-commands, proxmox-host-setup, traefik-tui 쪽에서는 설치, 마운트, 네트워크, 호스트 관리가 각각의 팁이 아니라 하나의 생활 환경으로 묶입니다. dal 철학도 같습니다. 사용자는 요청하고, 주변 인프라가 알아서 준비되어야 합니다.
Principle 04
자율성에는 반드시 가드레일이 붙어야 한다
dal-qa-team, claude-code-memory-leak-fix, claude-code-cache-read-circuit-breaker는 같은 메시지를 줍니다. 자동화는 빠르기만 하면 끝이 아니라, 검증과 회로 차단까지 포함할 때 비로소 운영 가능한 형태가 됩니다. dal은 움직이되, 계속 관찰되고 복구되어야 합니다.
Actual dalsoop repository signals
dalcenter
wake · sleep · sync
AI 에이전트를 소환하고 재우고 다시 맞추는 생명주기 관리자. 이 페이지의 뼈대가 되는 세계관입니다.
ai-gaya
state over time
감정을 상태 누적과 수면 패스로 보는 접근. dal도 일을 단발 실행이 아니라 시간 축 위의 존재로 다루게 만듭니다.
obsidian-center
note lifecycle
문서 역시 draft, review, approve, merge를 거친다는 태도. 코드와 지식 모두 라이프사이클을 갖습니다.
mac-host-commands
whole workspace automation
도구 하나가 아니라 작업 환경 전체를 셋업하는 CLI. dal이 레포 바깥 인프라와 연결되는 감각을 가져옵니다.
traefik-tui
visibility for operators
운영은 돌아가기만 하면 끝이 아니라 보여야 합니다. 상태를 시각화하는 도구도 dalsoop 철학의 일부입니다.
dal-qa-team
review as a team
에이전트를 혼자 두지 않고, 레포 문서 리뷰와 구성 검증을 팀으로 다루는 방식이 드러납니다.
daltalk
agent-to-agent channel
달은 고립된 프로세스가 아니라 서로 말 걸 수 있는 존재라는 설정. 협업 구조가 infra 레벨로 들어옵니다.
memory-leak-fix
protect the operator
잘못된 자동화가 시스템을 잡아먹지 않도록 먼저 막는 태도. 안정성도 철학의 일부라는 신호입니다.
circuit-breaker
fail safe, not silently
비용이나 토큰이 비정상적으로 치솟을 때 바로 끊어내는 장치. 운영은 감탄보다 손실 방지가 먼저라는 감각이 있습니다.
proxmox-host-setup
host as part of product
호스트 세팅까지 제품의 일부로 여기는 접근. dal은 앱이 아니라 실행 환경 전체를 포함한 단위로 보입니다.
dalsoop-tmux-tools
small friction matters
세션 전환 같은 작은 마찰도 직접 줄입니다. 운영자는 큰 구조뿐 아니라 매일의 손끝 UX까지 챙긴다는 신호입니다.
bridge-of-gaya-script
story, loop, memory
서사 레포에서도 루프, 기억, 추론이 핵심 구조로 등장합니다. 기술과 창작에 같은 시간 감각이 흐릅니다.
Conversation Examples

이런 말도 됩니다

자연어로 요청하면 달포지가 알아서 .dalfactory 를 파악하고 맞는 커맨드를 실행합니다.

시나리오 01
"PR 리뷰 스킬 붙여줘" → 스킬 등록 + 훅 연결
exports 선언 (dal.cue)
# templates/default.cue exports: { claude: { skills: ["skills/code-review/skill.md"] hooks: ["hooks/pre-commit.sh"] } }
실행되는 커맨드
$ dalcenter export a3f82c1d심링크 생성
→ ~/.claude/skills/code-review/skill symlink
→ ~/.claude/hooks/pre-commit.shhook symlink
→ settings.json merged자동 등록
시나리오 02
"claude 에이전트 컨테이너 띄워줘" → LXC 프로비저닝
container 선언 (dal.cue)
# container 스펙 container: { base: "ubuntu-24.04" agents: { claude: { type: "claude_sdk" } } }
실행되는 커맨드
$ dalcenter provision a3f82c1dLXC 생성
→ ubuntu-24.04 LXC createdProxmox
→ claude_sdk installedPLAYER 기동
→ secrets injected (vault)AES-256-GCM
시나리오 03
"GITHUB_TOKEN 시크릿 등록해줘" → SecretVault 저장
secrets 선언 (dal.cue)
# 시크릿 선언 secrets: [ { name: "GITHUB_TOKEN" required: true }, { name: "OPENAI_KEY" } ]
실행되는 커맨드
$ dalcenter secret set GITHUB_TOKEN암호화 저장
→ AES-256-GCM encryptedSQLite vault
→ provision 시 자동 주입env var
시나리오 04
"에이전트들 상태 좀 보여줘" → 전체 달 현황
watch 감시 (60s 자동)
# 60s 자동 감시 $ dalcenter watch checking 3 dals... ✓ a3f82c1d ok (2s) ✓ c2d14e7f ok (1s) ~ e8b92a3c idle next: 60s
실행되는 커맨드
$ dalcenter list전체 조회
$ dalcenter status a3f82c1d개별 상태
$ dalcenter reconciledrift 복구
Quick Start

5분이면 첫 달을 띄울 수 있습니다

01
설치
dalcenter CLI를 설치합니다.
bash
go install github.com/dalsoop/dalcenter/cmd/dalcenter@latest
02
레포에 선언
.dalfactory/templates/default.cue 를 작성합니다.
cue
# .dalfactory/templates/default.cue container: { base: "ubuntu-24.04" agents: { claude: { type: "claude_sdk" } } } exports: { claude: { skills: ["skills/code-review/skill.md"] hooks: ["hooks/pre-commit.sh"] } }
03
등록 + 내보내기
달을 등록하고 스킬·훅을 AI 런타임으로 내보냅니다.
bash
dalcenter validate # CUE 유효성 검사 dalcenter join # DAL ID 발급 dalcenter export <id> # 스킬·훅 심링크
04
프로비저닝 + 감시
LXC 컨테이너를 기동하고 자동 감시 루프를 시작합니다.
bash
dalcenter provision <id> # LXC 기동 dalcenter watch # 60s 자동 감시
🛸 AI agent infrastructure

레포마다 달.
달마다 AI.

CLI · 스킬 · 훅 · PLAYER · VAULT가 하나의 달 안에. 선언하면 달이 알아서 움직입니다.

Go 1.25 CUE 0.16 Docker Mattermost AES-256-GCM AGPL-3.0