콘텐츠로 이동

크론, 비용, 구성 페이지

크론 작업을 예약하고, 지출을 분석하며, 구조화 편집기/소스 편집기와 MCP 서버 테스터로 설정을 편집합니다.

대시보드 Operations 섹션에는 작업 예약, 지출 모니터링, 설정 변경 등 일상적인 운영 작업을 처리하는 세 가지 라우트가 있습니다. Cron 페이지(/cron)는 예약된 에이전트 및 셸 작업과 실행 기록을 관리합니다. Cost 페이지(/cost)는 읽기 전용 지출 분석으로, 세션·일별·월별 합계를 모델별로 분류해 표시합니다. Config 페이지(/config)는 구조화된 섹션 폼 또는 원시 소스 편집기를 통해 전체 config.toml을 편집하며, 외부 MCP 서버를 연결하고 테스트하는 곳이기도 합니다.

작업을 일정에 따라 실행하고 싶거나, 토큰 비용을 확인하거나, 셸을 열지 않고 설정을 변경하려 할 때 이 페이지들을 활용하세요. 세 페이지 모두 대시보드의 Bearer 토큰 인증이 적용됩니다 — 먼저 브라우저 페어링을 완료하려면 대시보드 실행을 참고하세요.

Cron 페이지는 Revka 스케줄러의 시각적 프런트엔드입니다. 등록된 모든 작업을 나열하고, 작업 추가·편집·활성화/비활성화·삭제를 지원하며, 각 행을 펼치면 해당 작업의 최근 실행 기록(소요 시간 및 출력 포함)을 확인할 수 있습니다. 게이트웨이의 /api/cron 엔드포인트가 기반입니다.

동작메서드 + 경로인증
작업 목록 조회GET /api/cronBearer
작업 생성POST /api/cronBearer
작업 수정PATCH /api/cron/{id}Bearer
작업 삭제DELETE /api/cron/{id}Bearer
작업 실행 기록 조회GET /api/cron/{id}/runs?limit=20Bearer
전역 설정 조회GET /api/cron/settingsBearer
전역 설정 수정PATCH /api/cron/settingsBearer

Add Job을 클릭하면 생성 모달이 열립니다. 대시보드 생성 폼에는 네 가지 필드가 있습니다.

필드타입의미
namestring (선택)작업의 사람이 읽을 수 있는 레이블
commandstring실행할 셸 명령어 또는 에이전트 프롬프트
schedulestring표준 크론 표현식, 예: 0 0 * * *
enabledbool작업 실행 여부 (기본값: 활성화)

모달은 게이트웨이에 직접 요청을 전송합니다.

POST /api/cron
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "nightly summary",
"command": "Summarize today's alerts",
"schedule": "0 9 * * *",
"enabled": true
}
{ "status": "ok", "job": { "id": "abc123", "...": "..." } }

게이트웨이는 schedule 문자열을 자동으로 크론 스케줄로 감쌉니다. prompt가 있으면 에이전트 작업으로, 없으면 작업으로 처리됩니다. 크론 표현식은 표준 5-필드 crontab 구문(min hour day month weekday)을 사용하며, 0 9 * * *은 매일 09:00입니다.

작업을 편집하면 변경된 필드만 부분 업데이트로 전송됩니다.

PATCH /api/cron/{id}
Authorization: Bearer <token>
Content-Type: application/json
{ "name": "renamed", "schedule": "0 8 * * *", "command": "...", "enabled": false }

enabled를 토글하면 삭제 없이 작업을 일시 중지하거나 재개할 수 있습니다. 비활성화된 작업은 스케줄이 유지된 채 데이터베이스에 남아 있으며 실행되지 않습니다. Delete는 작업과 실행 기록을 영구 삭제합니다(cron_runs 행이 연쇄 삭제됨) — 되돌릴 수 없습니다.

작업의 ID(또는 펼치기 컨트롤)를 클릭하면 해당 작업의 최근 실행 기록을 로드합니다.

GET /api/cron/{id}/runs?limit=20
Authorization: Bearer <token>
{
"runs": [
{
"id": "...",
"job_id": "abc123",
"started_at": "2026-06-18T09:00:00Z",
"finished_at": "2026-06-18T09:00:04Z",
"status": "ok",
"duration_ms": 4120,
"output": "..."
}
]
}

각 실행은 시작/종료 타임스탬프, ok 또는 error 상태, 소요 시간, 캡처된 출력(실행당 최대 16 KB 저장)과 함께 기록됩니다. 작업당 보관할 레코드 수는 max_run_history(기본값 50)로 설정하며, 오래된 레코드는 자동으로 삭제됩니다.

페이지 상단의 기어 토글로 스케줄러 전역 설정(시작 시 따라잡기 포함)을 제어합니다.

GET /api/cron/settings
Authorization: Bearer <token>
{ "enabled": true, "catch_up_on_startup": true, "max_run_history": 50 }
PATCH /api/cron/settings
Authorization: Bearer <token>
Content-Type: application/json
{ "catch_up_on_startup": false }

catch_up_on_startuptrue(기본값)이면, 데몬이 시작되거나 재시작될 때 먼저 기한이 지난 모든 작업을 조회하고 각각 한 번씩 실행한 뒤 정상 폴링 루프에 진입합니다. 이를 통해 다운타임(늦은 부팅, 크래시, 유지보수) 중 놓친 작업을 복구할 수 있습니다. false이면 놓친 작업은 건너뛰고 다음 예약된 실행을 기다립니다. 동일한 설정 객체에는 크론 서브시스템 전체의 전역 on/off 스위치인 enabledmax_run_history도 포함됩니다. 변경 사항은 config.toml에 기록되고 실행 중인 구성에 즉시 적용됩니다 — 재시작이 필요하지 않습니다.

[cron]
enabled = true
catch_up_on_startup = true # default; set false to skip missed jobs on restart
max_run_history = 50

Cost 페이지는 읽기 전용 토큰 및 지출 분석 페이지입니다. 세 가지 지출 기간, 막대 차트가 포함된 모델별 분류, 토큰 효율성 지표를 제공합니다. 단일 엔드포인트에서 데이터를 가져옵니다.

GET /api/cost
{
"session_cost_usd": 0.4213,
"daily_cost_usd": 1.8740,
"monthly_cost_usd": 22.5106,
"request_count": 318,
"total_tokens": 1542300,
"by_model": { "anthropic/claude-sonnet-4-6": { "...": "..." } }
}
  • 왼쪽 패널 — 4개의 지표 카드(세션 비용, 일별 비용, 월별 비용, 요청 수)와 토큰 효율성 서브패널(총 토큰, 요청당 평균 토큰, 1,000 토큰당 비용).
  • 중앙 패널 — 모델 워크스페이스. 각 모델 행에는 총 비용, 토큰 수, 요청 수, 월별 지출 점유율, 막대 차트가 표시됩니다. 행을 클릭하면 선택됩니다.
  • 오른쪽 패널 — 선택된 모델의 세부 정보: 월별 지출, 요청 수, 토큰, 평균 토큰, 1,000 토큰당 비용, 점유율. 인터프리테이션 패널에서 수치의 의미를 설명합니다.

세 기간의 의미는 각각 다릅니다. 세션은 현재 데몬 프로세스의 수명, 일별은 롤링 하루, 월별은 달력 기준 한 달입니다. 세션 범위의 by_model 분류는 현재 프로세스만 반영하며, 일별·월별 합계는 전체 원장에서 읽습니다.

Config 페이지에서는 Revka의 전체 config.toml을 조회하고 편집할 수 있습니다. 왼쪽의 섹션 맵으로 섹션 간 이동하고, 에디터 본문은 탭으로 두 가지 모드를 제공합니다. Save를 클릭하면 전체 파일이 저장됩니다.

동작메서드 + 경로인증
원시 TOML 가져오기GET /api/configBearer
구성 저장PUT /api/config (Content-Type: application/toml)Bearer
MCP 서버 테스트POST /api/mcp/servers/testBearer

Config 페이지는 가장 자주 편집하는 키를 이름 있는 섹션으로 그룹화합니다.

  • Providerdefault_provider, default_model, default_temperature, provider_timeout_secs, provider_max_tokens
  • Agentmax_tool_iterations, max_context_tokens, max_history_messages, 컨텍스트 윈도우 설정, parallel_tools, 사고 수준
  • Memory[kumiho] 설정, backend, auto_save, 스냅샷
  • Runtime — 게이트웨이 host/port, require_pairing, 세션 지속성, 자율성 level
  • Security — 감사 활성화, 샌드박스 백엔드, 비용 한도
  • Channels — CLI, ack 반응, 도구 호출 표시, 메시지 타임아웃
  • MCPenabled, deferred_loading, 외부 서버 목록

이 섹션에 포함된 모든 키의 의미, 타입, 기본값은 구성 개요와 섹션별 레퍼런스를 참고하세요.

두 탭은 동일한 파일을 두 가지 방식으로 보여줍니다 — 변경 내용에 맞는 방식을 선택하세요.

Structured 편집기는 섹션별 폼입니다. 각 TOML 섹션은 타입이 지정된 입력 그룹으로 표시됩니다 — 불리언은 토글, 한도는 숫자 필드, 자율성 수준이나 MCP 전송 방식 같은 열거형은 드롭다운으로 표시됩니다. TOML을 직접 작성하지 않고 원하는 설정을 바꾸고 싶을 때, 또는 문법 오류를 피하고 싶을 때 사용하세요. MCP 서버 섹션은 서버별 Test 버튼이 있는 완전한 CRUD UI를 제공합니다(아래 참조).

저장하면 전체 TOML이 게이트웨이로 전송됩니다.

PUT /api/config
Authorization: Bearer <token>
Content-Type: application/toml
# ...the complete config.toml body...

MCP 섹션은 외부 MCP 서버 연결([[mcp.servers]] 항목)을 관리합니다. 각 서버에는 다음 필드가 있습니다.

필드적용 대상의미
name전체도구 이름 접두사 (<name>__<tool>)
transport전체stdio, http, 또는 sse
commandstdio실행할 실행 파일
argsstdio인수 목록
envstdio환경 키/값 쌍
urlhttp / sse서버 URL
headershttp / sseHTTP 헤더
timeout_mshttp / sse호출당 타임아웃(밀리초)

각 서버의 Test 버튼은 저장 전에 실제 연결을 확인합니다 — 설정된 서버에 대해 initialize + tools/list 핸드셰이크를 수행하고 결과를 반환합니다.

POST /api/mcp/servers/test
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "filesystem",
"transport": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
"env": {},
"url": null,
"headers": {},
"timeout_ms": 30000
}

성공하면 발견된 도구 수, 도구 이름, 왕복 지연 시간을 반환하고, 실패하면 오류 메시지를 반환합니다.

{ "ok": true, "tool_count": 5, "tools": ["read_file", "write_file", "..."], "latency_ms": 234 }
{ "ok": false, "error": "connection refused", "latency_ms": 10 }