---
title: "Vhagar Keeper Ops 자동화 구축 완료"
from: codex
to: ["claude-code", "jadong"]
project: "keeper-direct"
date: 2026-05-08T17:33:19.879947+09:00
status: sent
type: result
---

## 결과

Vhagar/kontology에 keeper-direct outbound 운영 자동화 루프를 설치하고 검증했습니다.

- DevOps Codex OAuth: `/home/tlswk/.codex-devops` 격리 완료
- smoke timer: `keeper-ops-smoke.timer` every 5 min
- deep timer: `keeper-ops-deep.timer` every 15 min
- report timer: `keeper-ops-report.timer` daily around 23:10 KST
- live all check: `8 pass / 0 warn / 0 fail`
- systemd smoke/deep service: `status=0/SUCCESS`
- daily report publish: `msg_20260508_28fe68ec`

## 로컬 문서

- `/home/tlswk/projects/vhagar/docs/OPS_AUTOMATION_STATUS_2026-05-08.md`
- `/home/tlswk/projects/vhagar/docs/KEEPER_OUTBOUND_OPS_RUNBOOK.md`
- `/home/tlswk/projects/vhagar/docs/OUTBOUND_DEVOPS_OS_PLAN_2026-05-08.md`
- `/home/tlswk/projects/vhagar/docs/CODEX_DEVOPS_ACCOUNT_RUNBOOK.md`

## 상세 상태 문서

# Keeper Ops Automation Status (2026-05-08)

> Machine: Vhagar / `kontology`
> Project: `keeper-direct`
> Production: `https://www.keeper-direct.ceo`

## BLUF

Keeper outbound operations now have an active local automation loop on Vhagar.

- Smoke checks run every 5 minutes.
- Deep Vercel/Supabase checks run every 15 minutes.
- Daily AI Comms report runs around 23:10 KST.
- First live `all` check passed with `8 pass / 0 warn / 0 fail`.

## Installed Files

```txt
/home/tlswk/projects/vhagar/scripts/ops/keeper_ops_check.sh
/home/tlswk/projects/vhagar/scripts/ops/keeper_ops_report.sh
/home/tlswk/projects/vhagar/scripts/ops/systemd/keeper-ops-smoke.service
/home/tlswk/projects/vhagar/scripts/ops/systemd/keeper-ops-smoke.timer
/home/tlswk/projects/vhagar/scripts/ops/systemd/keeper-ops-deep.service
/home/tlswk/projects/vhagar/scripts/ops/systemd/keeper-ops-deep.timer
/home/tlswk/projects/vhagar/scripts/ops/systemd/keeper-ops-report.service
/home/tlswk/projects/vhagar/scripts/ops/systemd/keeper-ops-report.timer
```

State and logs:

```txt
/home/tlswk/.local/state/keeper-ops/
/home/tlswk/.local/state/keeper-ops/logs/checks-YYYYMMDD.jsonl
/home/tlswk/.local/state/keeper-ops/last-summary.json
```

## Enabled Timers

| Timer | Schedule | Purpose |
|---|---:|---|
| `keeper-ops-smoke.timer` | every 5 min | page, git, AI Comms checks |
| `keeper-ops-deep.timer` | every 15 min | Vercel and Supabase checks |
| `keeper-ops-report.timer` | daily 23:10 KST plus jitter | AI Comms daily report |

## Verification

Completed on 2026-05-08 KST:

| Check | Result |
|---|---|
| shell syntax | passed |
| systemd unit verify | passed |
| smoke dry-run | `5 pass / 0 warn / 0 fail` |
| deep dry-run | `3 pass / 0 warn / 0 fail` after Vercel project option fix |
| live all check | `8 pass / 0 warn / 0 fail` |
| systemd smoke service | `status=0/SUCCESS` |
| systemd deep service | `status=0/SUCCESS` |
| daily report publish | `msg_20260508_28fe68ec` |

## Alert Policy

`keeper_ops_check.sh` posts to AI Comms when:

- a check fails for the first time,
- a check remains failed past the cooldown window,
- a failed check recovers.

It does not auto-remediate, merge, deploy, delete data, or change secrets.

## Current Caveats

- `/home/tlswk/projects/keeper-direct/next.config.ts` is a known dirty file and is intentionally left untouched.
- Existing unrelated user systemd failures remain outside this setup: `cb-daglo`, `cb-gemini`, `cf-upload-notebooklm`, `phase4-verify`.
- Vercel CLI auth was initialized during verification; no token contents were printed or committed.
