> ## 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 セッション" },
]}
/>

機能は大きく 2 つに分かれます。片方はインストールしたその瞬間から動きます。

<CardGroup cols={2}>
  <Card title="ステータスと使用量" href="/ja/status-usage" icon="signal">
    5 つのプロバイダーに対応したホーム画面ウィジェットと、障害が起きたときや上限が近づいたときの通知。無料です。
  </Card>

  <Card title="セッション" href="/ja/sessions/overview" icon="mobile-screen">
    Claude Code と Codex の動きをロック画面で追いかけ、許可の確認にもその場で答えられます。
  </Card>
</CardGroup>

## まずはここから

<CardGroup cols={2}>
  <Card title="アプリをインストールする" href="/ja/installation" icon="apple">
    App Store から Nomo を入手します。
  </Card>

  <Card title="新着情報" href="/ja/changelog" icon="clock-rotate-left">
    最近のリリース。
  </Card>
</CardGroup>
