Files
kebab/tasks/p9/p9-fb-29-http-daemon.md
altair823 16b4f9fb9f 📝 docs(HANDOFF): 도그푸딩 피드백에 따른 백로그 항목 추가
- P9 dogfooding 백로그 항목 fb-26 ~ fb-42 추가
- 각 항목의 목표, 증상, 후속 작업 및 위험 요소 명시
- release 계획에 따른 0.3.0 ~ 0.6.0 분할

📝 docs(INDEX): 백로그 항목에 대한 세부 정보 추가

- fb-26 ~ fb-42 항목의 세부 정보 및 상태 추가
- 각 항목의 목표와 후속 작업 명시
- 도그푸딩 피드백에 따른 개선 사항 반영

🔧 chore(tasks): 새로운 백로그 항목 파일 생성

- p9-fb-26 ~ p9-fb-42 각 항목에 대한 개별 파일 생성
- 각 파일에 목표, 증상, 후속 작업 및 위험 요소 포함
- doogfooding 피드백을 기반으로 한 개선 사항 문서화
2026-05-06 13:26:36 +00:00

46 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
phase: P9
component: kebab-cli + new crate (kebab-server)
task_id: p9-fb-29
title: "HTTP daemon (`kebab serve`) — subprocess overhead 제거"
status: open
target_version: 0.3.0
depends_on: []
unblocks: [p9-fb-30]
contract_source: ../../docs/superpowers/specs/2026-04-27-kebab-final-form-design.md
contract_sections: [§7 RAG, §10 UX]
source_feedback: 사용자 도그푸딩 2026-05-06 — agent loop 가 kebab CLI 를 반복 호출 시 subprocess fork + Lance/SQLite cold start 비용 누적. local HTTP daemon 이 latency 해결.
---
# p9-fb-29 — HTTP daemon (`kebab serve`)
> ⏳ **백로그 only — 미구현.** 본 spec 은 도그푸딩 피드백 skeleton. 구현 착수 전 [superpowers:brainstorming](../../docs/superpowers/) 으로 설계 단계 선행 필요. bind / auth / endpoint scheme / lifecycle (auto-start vs explicit) brainstorm 후 확정.
## 증상 / 동기
- 현재 `kebab search` / `kebab ask` 가 매 호출 process fork — Lance / SQLite / fastembed 모델 로드 cold start.
- agent 가 10 회 search 도는 loop 면 cold start × 10. local-first 단일 사용자라도 latency 누적.
- daemon 으로 띄우면 hot — sub-100ms search 가능.
## Goal (skeleton)
- `kebab serve --port <N> --bind 127.0.0.1` — local HTTP API.
- endpoint: `/search`, `/ask`, `/fetch`, `/ingest`, `/stats`, `/schema`. wire schema v1 재사용.
- auth: local bind 면 무인증 (외부 host 면 token).
- streaming `/ask` (Server-Sent Events 또는 chunked).
- lifecycle: 사용자 명시 실행 vs CLI 자동 spawn (XDG runtime path 의 socket).
## 후속 작업 — brainstorm 필요 항목
- web framework: axum / hyper / actix — workspace 통일성 + binary size.
- 단일 인스턴스 보장 (PID file / socket lock).
- daemon ↔ CLI shim — CLI 가 daemon 살아있으면 HTTP 사용, 없으면 fork.
- TUI 와 daemon 공존 — TUI 도 daemon 있으면 HTTP 통해 (현재는 in-process).
- fb-30 (MCP) 와 transport 공유 — MCP-over-HTTP-SSE.
## Risks / notes
- 단일 사용자 local 환경 — daemon 없는 단순함 trade-off.
- fb-30 와 강결합 — 함께 brainstorm 하면 architecture 일관.
- security: bind 127.0.0.1 default 강제 — 0.0.0.0 은 명시 opt-in.