원클릭으로
doc-daemon
Agach daemon agent: onboarding, WebSocket reconnect, Docker builds, chat sessions (Claude CLI), git worktrees, SQLite persistence
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Agach daemon agent: onboarding, WebSocket reconnect, Docker builds, chat sessions (Claude CLI), git worktrees, SQLite persistence
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Agach complete HTTP API reference: all REST endpoints, request/response types, WebSocket events, SSE, query parameters
Agach identity system: authentication (JWT, bcrypt), SSO/OIDC, teams, users, nodes, daemon onboarding, token management
Agach shared infrastructure: internal/pkg (controller, middleware, websocket, sse, apierror), pkg (server types, client SDK, daemonws, domainerror), agachconfig
Agach project hexagonal architecture: bounded contexts, source code hierarchy, entry points, layers, and package structure
Agach business rules: blocking workflow, won't-do workflow, GetNextTask logic, resolution auto-append, priority system, comment system, features
Agach database schema: PostgreSQL tables for projects, roles, tasks, columns, comments, dependencies, features, skills, dockerfiles, notifications, chat sessions, specialized agents, nodes, onboarding
| name | doc-daemon |
| description | Agach daemon agent: onboarding, WebSocket reconnect, Docker builds, chat sessions (Claude CLI), git worktrees, SQLite persistence |
| user-invocable | true |
| disable-model-invocation | false |
internal/daemon/)Background agent that onboards with the server, maintains a WebSocket connection, manages Docker image builds, spawns Claude CLI chat sessions, and manages git worktrees.
domain/)OnboardingResult — AccessToken, RefreshToken, NodeID, NodeName, ModeProjectInfo — ID, Name, GitURLDaemonState — StateDisconnected, StateOnboarding, StateConnectedBuildID, BuildStatus — pending, building, success, failedDockerBuild — ID, DockerfileSlug, Version, ImageHash, ImageSize, Status, BuildLog, timestampsServerAuth — RefreshDaemonToken(nodeID, refreshToken) → accessTokenServerOnboarding — CompleteOnboarding(code, nodeName) → OnboardingResultServerConnection — RunWithReconnect(ctx), Send(msg)ProjectFetcher — GetProject(token, projectID) → ProjectInfoChatUploader — UploadJSONL(token, projectID, featureID, sessionID, filePath)config/config.go)~/.config/agach/daemon.yml (or AGACH_SERVER_URL env var)app/)app.go)States: Init → Onboarding → Connected → Reconnecting → Stopped
Run(ctx) — onboard → connect WS → handle events until stoppedtokens.go)~/.config/agach-daemon/tokens.json (0600 permissions)chat.go)--output-format stream-jsonChatSession tracks: ID, FeatureID, ProjectID, ClaudeSessionID, WorktreePath,
token counts, model, message count, timestampsdocker.go)ListImages(ctx) — groups builds by dockerfile slugRebuild(ctx, slug, eventCh) — creates build record, streams eventsGetBuildLogs(ctx, buildID) — returns build logPruneNonLatest(ctx, eventCh) — removes all but latest per sluggit.go)~/.cache/agachEnsureWorktree(projectID, gitURL, mainBranch) — clone or fetch+pullclient/)AuthClient — POST /api/daemon/refreshOnboardingClient — POST /api/onboarding/complete (error codes: CODE_NOT_FOUND, CODE_EXPIRED, CODE_ALREADY_USED)ProjectClient — GET /api/projects/{projectID}WSClient — WebSocket with exponential backoff reconnect (1s → 30s max)ChatUploadClient — POST multipart JSONL uploadinbound/ws/)func(ctx, daemonws.Message) (daemonws.Message, error)outbound/sqlite/)builds table: id, dockerfile_slug, version, image_hash, image_size, status, build_log, timestampspkg/daemonws/)docker.list / docker.rebuild / docker.logs / docker.prunebuild.event (slug, build_id, status, log), prune.event (slug, removed, total)chat.start → ChatStartRequest (session_id, feature_id, project_id, node_id, resume_session_id)chat.user_msg → ChatUserMessage (session_id, content)chat.end → EndSessionchat.ping → RefreshActivitychat.message, chat.stats, chat.end, chat.error, chat.ttl_warninginit.go)-init flag (create default config)