> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nomo.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# AI 상태와 사용량, 실시간 세션을 iPhone에서

> Nomo는 iPhone에서 코딩 에이전트를 대신 지켜봅니다 — 서비스 상태, 플랜 사용량, 그리고 바로 답할 수 있는 실시간 세션.

export const Screens = ({shots, slide = 240, gap = 24}) => {
  const chevron = back => <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
      <polyline points={back ? "15 18 9 12 15 6" : "9 18 15 12 9 6"} />
    </svg>;
  const [i, setI] = useState(0);
  const [zoomed, setZoomed] = useState(false);
  const touch = useRef(null);
  const n = shots.length;
  const go = d => setI(p => Math.min(n - 1, Math.max(0, p + d)));
  useEffect(() => {
    const onKey = e => {
      if (e.key === "Escape") setZoomed(false); else if (e.key === "ArrowRight") go(1); else if (e.key === "ArrowLeft") go(-1); else return;
      e.preventDefault();
    };
    if (!zoomed) return;
    const prev = document.body.style.overflow;
    document.body.style.overflow = "hidden";
    window.addEventListener("keydown", onKey);
    return () => {
      document.body.style.overflow = prev;
      window.removeEventListener("keydown", onKey);
    };
  }, [zoomed, n]);
  const offset = ((n - 1) / 2 - i) * (slide + gap);
  return <div className="carousel" onTouchStart={e => {
    touch.current = e.touches[0].clientX;
  }} onTouchEnd={e => {
    const dx = e.changedTouches[0].clientX - touch.current;
    if (Math.abs(dx) > 40) go(dx < 0 ? 1 : -1);
  }}>
      <div className="carousel-viewport">
        <div className="carousel-track" style={{
    gap: `${gap}px`,
    transform: `translateX(${offset}px)`
  }}>
          {shots.map((s, k) => <button key={s.src} type="button" className={k === i ? "carousel-slide is-active" : "carousel-slide"} style={{
    width: `${slide}px`
  }} onClick={() => k === i ? setZoomed(true) : setI(k)} aria-label={k === i ? `Enlarge: ${s.alt}` : s.alt}>
              <img src={s.src} alt={k === i ? s.alt : ""} draggable="false" />
            </button>)}
        </div>
      </div>

      <div className="carousel-controls">
        <button type="button" onClick={() => go(-1)} disabled={i === 0} aria-label="Previous screenshot">
          {chevron(true)}
        </button>
        <div className="carousel-dots">
          {shots.map((s, k) => <button key={s.src} type="button" className={k === i ? "is-active" : ""} onClick={() => setI(k)} aria-label={`Screenshot ${k + 1} of ${n}`} aria-current={k === i} />)}
        </div>
        <button type="button" onClick={() => go(1)} disabled={i === n - 1} aria-label="Next screenshot">
          {chevron(false)}
        </button>
      </div>

      {zoomed && <div className="carousel-lightbox" role="dialog" aria-modal="true" aria-label={shots[i].alt} onClick={() => setZoomed(false)}>
          {}
          <button type="button" className="carousel-lightbox-close" onClick={e => {
    e.stopPropagation();
    setZoomed(false);
  }} aria-label="Close">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" aria-hidden="true">
              <path d="M18 6 6 18M6 6l12 12" />
            </svg>
          </button>

          <button type="button" className="carousel-lightbox-step is-prev" onClick={e => {
    e.stopPropagation();
    go(-1);
  }} disabled={i === 0} aria-label="Previous screenshot">
            {chevron(true)}
          </button>

          <img src={shots[i].src} alt={shots[i].alt} onClick={e => e.stopPropagation()} />

          <button type="button" className="carousel-lightbox-step is-next" onClick={e => {
    e.stopPropagation();
    go(1);
  }} disabled={i === n - 1} aria-label="Next screenshot">
            {chevron(false)}
          </button>
        </div>}
    </div>;
};

Nomo는 코딩 에이전트에 일을 맡겨 두지만 하루 종일 그 앞에 앉아 있을 수는 없는
사람들을 위한 iPhone 앱입니다.

<Note>
  이 문서는 [영문 문서](/index)를 번역한 것입니다. 번역과 영문의 내용이 다를
  경우에는 영문 문서가 기준입니다.
</Note>

<Screens
  shots={[
{ src: "/images/screens/status.jpg", alt: "홈 화면에 놓인 상태와 사용량 위젯" },
{ src: "/images/screens/usage.jpg", alt: "Claude의 세션 한도와 주간 한도를 보여 주는 사용량 탭" },
{ src: "/images/screens/home-screen.jpg", alt: "다크 모드에서 모든 크기로 표시된 같은 위젯들" },
{ src: "/images/screens/alerts.jpg", alt: "서비스 장애와 사용량 한도를 알리는 잠금 화면 알림" },
{ src: "/images/screens/sessions.jpg", alt: "다이나믹 아일랜드에서 실행 중인 Claude Code 세션" },
]}
/>

크게 두 부분으로 나뉘며, 그중 첫 번째는 설치하는 순간부터 바로 동작합니다.

<CardGroup cols={2}>
  <Card title="상태와 사용량" href="/ko/status-usage" icon="signal">
    제공업체 다섯 곳을 위한 홈 화면 위젯, 그리고 어느 한 곳이 멈추거나 한도에
    가까워지면 보내는 알림. 무료입니다.
  </Card>

  <Card title="세션" href="/ko/sessions/overview" icon="mobile-screen">
    Claude Code와 Codex가 돌아가는 모습을 잠금 화면에서 지켜보고, 권한 요청에도
    거기서 바로 답합니다.
  </Card>
</CardGroup>

## 시작하기

<CardGroup cols={2}>
  <Card title="앱 설치하기" href="/ko/installation" icon="apple">
    App Store에서 Nomo를 받습니다.
  </Card>

  <Card title="새로운 소식" href="/ko/changelog" icon="clock-rotate-left">
    최근 릴리스입니다.
  </Card>
</CardGroup>
