ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐Ÿณ I Built a Container Dashboard for Your AI Coding Agent โ€” And It's Awesome
Dev.toDev.to
Infrastructure

3์ข… Runtime ์ง€์› ๋ฐ Guardrail ์ ์šฉ AI ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ ๋„๊ตฌ ๊ฐœ๋ฐœ

๐Ÿณ I Built a Container Dashboard for Your AI Coding Agent โ€” And It's Awesome

k1lgor2026๋…„ 5์›” 4์ผ6๋ถ„intermediate

Context

AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ ํ™œ์šฉ ์‹œ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ ํ™•์ธ์„ ์œ„ํ•œ ๋นˆ๋ฒˆํ•œ Context Switching ๋ฐœ์ƒ. LLM์— raw CLI ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์ธํ”„๋ผ ํŒŒ๊ดด ์œ„ํ—˜ ๋ฐ ๊ฐ€๋…์„ฑ ๋‚ฎ์€ JSON ์ถœ๋ ฅ๋ฌผ ์ฒ˜๋ฆฌ์˜ ํ•œ๊ณ„ ์กด์žฌ.

Technical Solution

  • Docker, Podman, Nerdctl์˜ ๊ณตํ†ต CLI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์šฉํ•œ Runtime Abstraction Layer ์„ค๊ณ„
  • pi.exec ๊ธฐ๋ฐ˜์˜ ์ˆœ์ˆ˜ ๋Ÿฐํƒ€์ž„ ๋กœ์ง ๊ตฌํ˜„์„ ํ†ตํ•œ ์™ธ๋ถ€ ์˜์กด์„ฑ ์ œ๊ฑฐ ๋ฐ ๊ฐ€๋ฒผ์šด ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ์œ ์ง€
  • dangerousPatterns ์ •๊ทœ์‹์„ ์ด์šฉํ•œ Destructive Command ์ธํ„ฐ์…‰ํŠธ ๋ฐ ์‚ฌ์šฉ์ž ํ™•์ธ ์ ˆ์ฐจ(Guardrails) ๋„์ž…
  • TypeBox ์Šคํ‚ค๋งˆ๋ฅผ ์ ์šฉํ•œ 13์ข…์˜ LLM Tool ์ •์˜๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋Ÿฐํƒ€์ž„ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ๊ฐ•ํ™”
  • JSON ํฌ๋งท ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ๊ฐ€๋…์„ฑ ๋†’์€ TUI Table ๋ฐ Summary ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ถœ๋ ฅ ์ตœ์ ํ™”
  • ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜(docker โ†’ podman โ†’ nerdctl)์˜ ์ž๋™ Runtime Detection ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๊ตฌํ˜„

1. AI ์—์ด์ „ํŠธ์—๊ฒŒ CLI ๊ถŒํ•œ ๋ถ€์—ฌ ์‹œ ์œ„ํ—˜ ๋ช…๋ น์–ด(rm, prune ๋“ฑ)์— ๋Œ€ํ•œ ์ธํ„ฐ์…‰ํ„ฐ ๊ณ„์ธต ์„ค๊ณ„ ์—ฌ๋ถ€ ๊ฒ€ํ† 

2. LLM ๋„๊ตฌ ์ •์˜ ์‹œ TypeBox ๋“ฑ ๋Ÿฐํƒ€์ž„ ํƒ€์ž… ๊ฒ€์ฆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ๊ฐ’ ์•ˆ์ •์„ฑ ํ™•๋ณด

3. ๋‹ค์–‘ํ•œ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ๋Œ€์‘์„ ์œ„ํ•ด CLI ์ธํ„ฐํŽ˜์ด์Šค ์ถ”์ƒํ™” ๊ณ„์ธต(Abstraction Layer) ๊ตฌ์ถ•

์›๋ฌธ ์ฝ๊ธฐ