{"schemaVersion":1,"product":{"name":"hop","url":"https://hop.tools","version":"2.4.1","operatingSystem":"macOS 14.0 or later","price":0,"currency":"USD","license":"MIT","source":"https://github.com/antonyshakirov/hop","accountRequired":false},"downloads":[{"architecture":"arm64","url":"https://hop.tools/api/hop/download"},{"architecture":"x86_64","url":"https://hop.tools/api/hop/download?arch=intel"}],"pages":{"id":"https://hop.tools/id/agents/","de":"https://hop.tools/de/agents/","en":"https://hop.tools/agents/","es":"https://hop.tools/es/agents/","fr":"https://hop.tools/fr/agents/","it":"https://hop.tools/it/agents/","nl":"https://hop.tools/nl/agents/","pl":"https://hop.tools/pl/agents/","pt":"https://hop.tools/pt/agents/","vi":"https://hop.tools/vi/agents/","tr":"https://hop.tools/tr/agents/","ru":"https://hop.tools/ru/agents/","sr":"https://hop.tools/sr/agents/","he":"https://hop.tools/he/agents/","ur":"https://hop.tools/ur/agents/","ar":"https://hop.tools/ar/agents/","fa":"https://hop.tools/fa/agents/","hi":"https://hop.tools/hi/agents/","th":"https://hop.tools/th/agents/","ko":"https://hop.tools/ko/agents/","zh":"https://hop.tools/zh/agents/","ja":"https://hop.tools/ja/agents/"},"modules":[{"id":"sound","names":{"id":"suara","de":"klang","en":"sound","es":"sonido","fr":"son","it":"suono","nl":"geluid","pl":"dźwięk","pt":"som","vi":"âm thanh","tr":"ses","ru":"звук","sr":"звук","he":"צליל","ur":"آواز","ar":"الصوت","fa":"صدا","hi":"ध्वनि","th":"เสียง","ko":"사운드","zh":"声音","ja":"サウンド"},"description":"Set each app’s output and volume. Combine voice and music in Hop Mix.","guide":"https://hop.tools/guide/sound/"},{"id":"timer","names":{"id":"timer","de":"timer","en":"timer","es":"temporizador","fr":"minuteur","it":"timer","nl":"timer","pl":"minutnik","pt":"temporizador","vi":"hẹn giờ","tr":"zamanlayıcı","ru":"таймер","sr":"тајмер","he":"טיימר","ur":"ٹائمر","ar":"المؤقّت","fa":"تایمر","hi":"टाइमर","th":"ตัวจับเวลา","ko":"타이머","zh":"计时器","ja":"タイマー"},"description":"hop pins the exact moment your timer ends, so the countdown never loses a second. your Mac can sleep, the panel can close — the time in the menu bar stays right.","guide":"https://hop.tools/guide/timer/"},{"id":"tracker","names":{"id":"pelacak waktu","de":"zeiterfassung","en":"time tracker","es":"seguimiento de tiempo","fr":"suivi du temps","it":"monitoraggio tempo","nl":"tijdregistratie","pl":"śledzenie czasu","pt":"controle de tempo","vi":"theo dõi thời gian","tr":"zaman takibi","ru":"трекер времени","sr":"мерач времена","he":"מעקב זמן","ur":"وقت کا حساب","ar":"متتبّع الوقت","fa":"ردیاب زمان","hi":"टाइम ट्रैकर","th":"ติดตามเวลา","ko":"시간 추적","zh":"时间跟踪","ja":"タイムトラッカー"},"description":"hop keeps a quiet log of where your hours go: start a task and the row counts the stretch you are working on, from zero. press the ✓ and that stretch is filed — the row shows your day, your week or the whole total again, and the next start counts from zero. a simple to-do list sits right beside it, so the day's plan and the day's time live in one place, no separate app to open.","guide":"https://hop.tools/guide/tracker/"},{"id":"awake","names":{"id":"tetap bangun","de":"wach","en":"awake","es":"despierto","fr":"éveil","it":"sveglio","nl":"wakker blijven","pl":"nie usypiaj","pt":"acordado","vi":"không ngủ","tr":"uyuma","ru":"запрет сна","sr":"без спавања","he":"ערנות","ur":"بیداری","ar":"اليقظة","fa":"بیداری","hi":"जागते रहो","th":"ห้ามหลับ","ko":"깨우기","zh":"防休眠","ja":"防スリープ"},"description":"downloads finish, builds keep running — and when a movie plays on an external display, you can simply close the lid.","guide":"https://hop.tools/guide/awake/"},{"id":"monitor","names":{"id":"monitor sistem","de":"systemmonitor","en":"system monitor","es":"monitor del sistema","fr":"moniteur système","it":"monitor di sistema","nl":"systeemmonitor","pl":"monitor systemu","pt":"monitor do sistema","vi":"theo dõi hệ thống","tr":"sistem izleme","ru":"монитор системы","sr":"монитор система","he":"מוניטור","ur":"مانیٹر","ar":"المراقب","fa":"پایشگر","hi":"सिस्टम मॉनिटर","th":"มอนิเตอร์ระบบ","ko":"시스템 모니터","zh":"系统监视器","ja":"システムモニタ"},"description":"cpu and gpu load with temperatures, memory, network, disk, battery health and cycles, power draw, uptime. calm by default — values light up only when something needs attention.","guide":"https://hop.tools/guide/monitor/"},{"id":"clipboard","names":{"id":"papan klip","de":"ablage","en":"clipboard","es":"portapapeles","fr":"papiers","it":"appunti","nl":"klembord","pl":"schowek","pt":"clipboard","vi":"clipboard","tr":"pano","ru":"буфер обмена","sr":"остава","he":"לוח","ur":"کلپ بورڈ","ar":"الحافظة","fa":"کلیپ‌بورد","hi":"क्लिपबोर्ड","th":"คลิปบอร์ด","ko":"클립보드","zh":"剪贴板","ja":"クリップ"},"description":"text, links, screenshots — and whole files: copy a file and hop remembers it by name, so the one you grabbed five minutes ago is still there, ready to paste back as the file itself. click any entry to bring it back, or drop it straight into the last app. history never leaves this Mac.","guide":"https://hop.tools/guide/clipboard/"},{"id":"converter","names":{"id":"konversi dan kompres","de":"umwandeln und verkleinern","en":"convert and compress","es":"convertir y comprimir","fr":"convertir et compresser","it":"convertire e comprimere","nl":"omzetten en verkleinen","pl":"konwertuj i kompresuj","pt":"converter e comprimir","vi":"chuyển đổi và nén","tr":"dönüştür ve sıkıştır","ru":"конвертация и сжатие","sr":"конвертуј и сажми","he":"ממיר קבצים","ur":"فائل کنورٹر","ar":"محوّل الملفات","fa":"مبدل پرونده","hi":"बदलें और छोटा करें","th":"แปลงและบีบอัด","ko":"변환과 압축","zh":"转换与压缩","ja":"変換と圧縮"},"description":"drag images, pdfs, video or audio from Finder into one window, and hop shows how much smaller every file will get before you convert. originals stay untouched.","guide":"https://hop.tools/guide/converter/"},{"id":"windows","names":{"id":"jendela","de":"fenster","en":"windows","es":"ventanas","fr":"fenêtres","it":"finestre","nl":"vensters","pl":"okna","pt":"janelas","vi":"cửa sổ","tr":"pencereler","ru":"окна","sr":"прозори","he":"חלונות","ur":"ونڈوز","ar":"النوافذ","fa":"پنجره‌ها","hi":"विंडो","th":"หน้าต่าง","ko":"창","zh":"窗口","ja":"ウィンドウ"},"description":"pick one of 18 zones — halves, thirds, quarters, center — and the active window snaps right there. one click, or global ⌃⌥ hotkeys if you never want to touch the mouse.","guide":"https://hop.tools/guide/windows/"},{"id":"torrent","names":{"id":"torrent","de":"torrents","en":"torrents","es":"torrents","fr":"torrents","it":"torrents","nl":"torrents","pl":"torrenty","pt":"torrents","vi":"torrent","tr":"torrentler","ru":"торренты","sr":"торенти","he":"טורנטים","ur":"ٹورنٹ","ar":"التورنت","fa":"تورنت","hi":"टोरेंट","th":"ทอร์เรนต์","ko":"토렌트","zh":"种子","ja":"トレント"},"description":"drop a .torrent file or paste a magnet link — hop downloads it right in the panel. the engine arrives as a separate ~26 mb download the first time you switch the module on, verified by signature, and talks only to hop on your Mac.","guide":"https://hop.tools/guide/torrent/"},{"id":"archives","names":{"id":"arsip berkas","de":"dateiarchive","en":"file archives","es":"archivos comprimidos","fr":"archives de fichiers","it":"archivi di file","nl":"bestandsarchieven","pl":"archiwa plików","pt":"arquivos compactados","vi":"kho nén tệp","tr":"dosya arşivleri","ru":"архивы файлов","sr":"архиве","he":"ארכיונים","ur":"آرکائیو","ar":"الأرشيفات","fa":"بایگانی‌ها","hi":"फ़ाइल आर्काइव","th":"ไฟล์บีบอัด","ko":"파일 압축","zh":"文件压缩包","ja":"ファイルアーカイブ"},"description":"drop archives into the window — or paste them with ⌘V — and press one button: they unpack onto your Desktop, or wherever you choose. drop ordinary files instead and they become one archive in the same place.","guide":"https://hop.tools/guide/archives/"},{"id":"shot","names":{"id":"tangkapan layar","de":"bildschirmfoto","en":"screenshot","es":"captura","fr":"capture d'écran","it":"schermata","nl":"schermafbeelding","pl":"zrzut ekranu","pt":"captura","vi":"ảnh màn hình","tr":"ekran görüntüsü","ru":"снимок экрана","sr":"снимак екрана","he":"צילום מסך","ur":"اسکرین شاٹ","ar":"لقطة الشاشة","fa":"عکس صفحه","hi":"स्क्रीनशॉट","th":"ภาพหน้าจอ","ko":"화면 캡처","zh":"截屏","ja":"スクリーンショット"},"description":"grab an area, a single window or the whole screen — the editor opens with the frame already in it. arrows, captions, numbered steps, blur over what nobody should read, a loupe over the small print, then save or copy.","guide":"https://hop.tools/guide/shot/"},{"id":"annotate","names":{"id":"gambar di layar","de":"am bildschirm zeichnen","en":"draw on screen","es":"dibujar en pantalla","fr":"dessiner à l'écran","it":"disegna a schermo","nl":"tekenen op scherm","pl":"rysuj na ekranie","pt":"desenhar na tela","vi":"vẽ trên màn hình","tr":"ekrana çiz","ru":"рисовать поверх","sr":"цртање по екрану","he":"ציור על המסך","ur":"اسکرین پر بنائیں","ar":"الرسم على الشاشة","fa":"کشیدن روی صفحه","hi":"स्क्रीन पर बनाएँ","th":"วาดบนหน้าจอ","ko":"화면에 그리기","zh":"屏幕绘制","ja":"画面に描く"},"description":"a transparent layer over everything, on every display: the marks land on whatever is already there, and the other side of a call watches you draw them. fading ink goes out on its own a couple of seconds after you lift the pointer.","guide":"https://hop.tools/guide/annotate/"},{"id":"recognition","names":{"id":"pengenalan teks","de":"texterkennung","en":"text recognition","es":"reconocimiento de texto","fr":"reconnaissance de texte","it":"riconoscimento del testo","nl":"tekstherkenning","pl":"rozpoznawanie tekstu","pt":"reconhecimento de texto","vi":"nhận dạng văn bản","tr":"metin tanıma","ru":"распознавание текста","sr":"препознавање текста","he":"זיהוי טקסט","ur":"متن کی شناخت","ar":"التعرّف على النص","fa":"شناسایی متن","hi":"टेक्स्ट पहचान","th":"การอ่านข้อความ","ko":"텍스트 인식","zh":"文字识别","ja":"文字認識"},"description":"frame a piece of the screen, or drop a picture into the window: the text and any QR codes come out where you can read, fix and copy them — and they land in your clipboard history at the same time.","guide":"https://hop.tools/guide/recognition/"},{"id":"colors","names":{"id":"pemilih warna","de":"farbpipette","en":"color picker","es":"selector de color","fr":"pipette à couleurs","it":"selettore colore","nl":"kleurenpipet","pl":"próbnik koloru","pt":"seletor de cor","vi":"ống hút màu","tr":"renk damlalığı","ru":"пипетка цвета","sr":"бирач боја","he":"בוחר צבעים","ur":"رنگ چننے والا","ar":"منتقي الألوان","fa":"انتخابگر رنگ","hi":"रंग पिकर","th":"หลอดดูดสี","ko":"색상 스포이트","zh":"颜色取色器","ja":"カラーピッカー"},"description":"press the shortcut and macOS's own loupe appears: click any pixel and the color joins a list, already copied. every row carries hex, rgb and hsl, and each of them is a button.","guide":"https://hop.tools/guide/colors/"},{"id":"vpn","names":{"id":"vpn","de":"vpn","en":"vpn","es":"vpn","fr":"vpn","it":"vpn","nl":"vpn","pl":"vpn","pt":"vpn","vi":"vpn","tr":"vpn","ru":"vpn","sr":"vpn","he":"vpn","ur":"vpn","ar":"vpn","fa":"vpn","hi":"vpn","th":"vpn","ko":"vpn","zh":"vpn","ja":"vpn"},"description":"hop lists every vpn your Mac knows about and gives each one a switch — whatever the brand. the list comes straight from System Settings, so a client you install appears on its own and one you remove disappears; there is nothing to add here and no waiting for support for your particular provider.","guide":"https://hop.tools/guide/vpn/"},{"id":"network","names":{"id":"blokir lalu lintas","de":"traffic-sperre","en":"traffic blocking","es":"bloqueo de tráfico","fr":"blocage du trafic","it":"blocco del traffico","nl":"verkeer blokkeren","pl":"blokowanie ruchu","pt":"bloqueio de tráfego","vi":"chặn lưu lượng","tr":"trafik engelleme","ru":"блокировка трафика","sr":"блокирање саобраћаја","he":"חסימת תעבורה","ur":"ٹریفک بلاکنگ","ar":"حظر حركة المرور","fa":"مسدودسازی ترافیک","hi":"ट्रैफ़िक ब्लॉकिंग","th":"บล็อกทราฟฟิก","ko":"트래픽 차단","zh":"流量拦截","ja":"通信ブロック"},"description":"hop shows every program that connects, and the addresses it reached, then lets you cut off any of them — the whole program, or one address of it. it runs on the network filter macOS provides for exactly this job, the same kind LuLu and Little Snitch use.","guide":"https://hop.tools/guide/network/"},{"id":"apps","names":{"id":"aplikasi","de":"programme","en":"apps","es":"apps","fr":"apps","it":"app","nl":"apps","pl":"aplikacje","pt":"apps","vi":"ứng dụng","tr":"uygulamalar","ru":"приложения","sr":"програми","he":"אפליקציות","ur":"ایپس","ar":"التطبيقات","fa":"برنامه‌ها","hi":"ऐप्स","th":"แอป","ko":"앱","zh":"应用","ja":"アプリ"},"description":"a grid of the programs you keep at hand, right in the panel: press + and pick them, or drag them in from Finder. choose how many fit across a row — three to nine, eight by default — and keep as many grids as you like, each with its own name.","guide":"https://hop.tools/guide/apps/"},{"id":"uninstall","names":{"id":"hapus aplikasi","de":"apps entfernen","en":"uninstall apps","es":"desinstalar apps","fr":"désinstaller des apps","it":"disinstalla app","nl":"apps verwijderen","pl":"odinstalowanie aplikacji","pt":"desinstalar apps","vi":"xoá ứng dụng","tr":"uygulama kaldırma","ru":"удаление программ","sr":"уклањање програма","he":"הסרת אפליקציות","ur":"ایپس ہٹانا","ar":"إزالة التطبيقات","fa":"حذف برنامه‌ها","hi":"ऐप हटाना","th":"ถอนการติดตั้งแอป","ko":"앱 삭제","zh":"卸载应用","ja":"アプリの削除"},"description":"drop an app on the row, or pick it from the list of everything installed, and it goes together with what it left in about thirty places. the same module also cleans up without removing anything: caches, installers, leftovers of apps you removed years ago, and the trash.","guide":"https://hop.tools/guide/uninstall/"},{"id":"keyboard","names":{"id":"kunci papan ketik","de":"tastatursperre","en":"keyboard lock","es":"bloqueo del teclado","fr":"verrou clavier","it":"blocco tastiera","nl":"toetsenbordslot","pl":"blokada klawiatury","pt":"bloqueio do teclado","vi":"khoá bàn phím","tr":"klavye kilidi","ru":"блокировка клавиатуры","sr":"закључавање тастатуре","he":"נעילת מקלדת","ur":"کی بورڈ لاک","ar":"قفل لوحة المفاتيح","fa":"قفل صفحه‌کلید","hi":"कीबोर्ड लॉक","th":"ล็อกคีย์บอร์ด","ko":"키보드 잠금","zh":"键盘锁定","ja":"キーボードロック"},"description":"tap 1, 5 or 15 minutes — or ∞ — and every key stops responding, so a cloth can go over it while the Mac keeps working.","guide":"https://hop.tools/guide/keyboard/"},{"id":"speed","names":{"id":"internet","de":"internet","en":"internet","es":"internet","fr":"internet","it":"internet","nl":"internet","pl":"internet","pt":"internet","vi":"internet","tr":"internet","ru":"интернет","sr":"интернет","he":"אינטרנט","ur":"انٹرنیٹ","ar":"الإنترنت","fa":"اینترنت","hi":"इंटरनेट","th":"อินเทอร์เน็ต","ko":"인터넷","zh":"网络","ja":"ネット"},"description":"one tap runs a real speed test against Apple's own infrastructure — download, upload and responsiveness, right in the panel.","guide":"https://hop.tools/guide/speed/"}],"automation":{"availability":"Detect locally. This catalog does not prove the installed build supports protocol 2. Require agent-state.json supportedAgentProtocols to include 2 AND agent-capabilities.json schemaVersion to equal 2. Use the installed capabilities, not this reference, to construct requests.","dataDirectory":"~/Library/Application Support/com.antonshakirov.minimo/","requirements":["Hop running on the customer's Mac","Customer-granted OS file access for their desktop agent","Explicit customer confirmation for the exact action"],"requestPublication":"Write a private 0600 file in the same directory, flush it, then publish agent-requests/<id>.json atomically without replacing an existing file. Keep the exact bytes immutable. One request is one action; wait for its result before dependent actions.","resultVerification":"Read agent-results/<id>.json. Match schemaVersion, id AND SHA256 requestDigest to the exact request bytes. applied means accepted by the current app session. Read agent-state.json to verify current state. A missing receipt or cleared legacy file is not proof of success.","uncertainOutcome":"On indeterminate, missing receipt, storage failure or conflict, stop and inspect current state with the customer. Never create another ID to bypass uncertainty. Retry only identical bytes under the same ID; expired requests cannot become new operations.","scopes":{"timer.start":"Replaces the current timer or stopwatch and clears its progress","timer.pause":"Pauses countdown mode only; rejects stopwatch mode","timer.reset":"Clears countdown progress and work-rest cycle; rejects stopwatch mode","stopwatch.start":"Starts or resumes the stopwatch; running stopwatch is unchanged; rejects a running or paused countdown","stopwatch.stop":"Pauses stopwatch mode only; rejects countdown mode","todo.complete":"Completes the exact task UUID from state","todo.delete":"Deletes the exact task UUID from state","tracker.stop":"Ends all active tracking sessions"},"privacy":"Local files contain the customer's data. Do not upload or expose them. This site cannot read or control a Mac. External agent attestation is not independent verification of the customer's identity.","referenceProtocol":{"actions":[{"effect":"Replaces the current timer or stopwatch and clears its progress","input":{"seconds":{"maximum":86400,"minimum":1,"type":"integer"}},"name":"timer.start","requiresCustomerConfirmation":true},{"effect":"Pauses countdown mode only; rejects stopwatch mode","input":{},"name":"timer.pause","requiresCustomerConfirmation":true},{"effect":"Clears countdown progress and work-rest cycle; rejects stopwatch mode","input":{},"name":"timer.reset","requiresCustomerConfirmation":true},{"effect":"Starts or resumes the stopwatch; running stopwatch is unchanged; rejects a running or paused countdown","input":{},"name":"stopwatch.start","requiresCustomerConfirmation":true},{"effect":"Pauses stopwatch mode only; rejects countdown mode","input":{},"name":"stopwatch.stop","requiresCustomerConfirmation":true},{"input":{"important":{"optional":true,"type":"boolean"},"note":{"maxLength":4000,"optional":true,"type":"string"},"text":{"maxLength":500,"minLength":1,"type":"string"}},"name":"todo.add","requiresCustomerConfirmation":true},{"effect":"Completes the exact task UUID from state","input":{"id":{"format":"uuid","source":"agent-state.json todos[].id","type":"string"}},"name":"todo.complete","requiresCustomerConfirmation":true},{"effect":"Deletes the exact task UUID from state","input":{"id":{"format":"uuid","source":"agent-state.json todos[].id","type":"string"}},"name":"todo.delete","requiresCustomerConfirmation":true},{"input":{"task":{"maxLength":500,"minLength":1,"type":"string"}},"name":"tracker.start","requiresCustomerConfirmation":true},{"effect":"Ends all active tracking sessions","name":"tracker.stop","requiresCustomerConfirmation":true,"scope":"all_active_tracking_sessions"}],"confirmation":{"independentlyVerifiesIdentity":false,"method":"client_agent_attestation"},"discoveryFile":"agent-capabilities.json","legacy":{"commandsFile":"agent-commands.json","perCommandResults":false,"protocol":1,"safeAutomaticRetries":false},"maxLifetimeSeconds":600,"maxRequestBytes":65536,"networkListener":false,"requestDirectory":"agent-requests","requestFile":"<lowercase UUID>.json","requestSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"command":{"oneOf":[{"additionalProperties":false,"properties":{"do":{"const":"timer.start"},"seconds":{"maximum":86400,"minimum":1,"type":"integer"}},"required":["do","seconds"],"type":"object"},{"additionalProperties":false,"properties":{"do":{"const":"timer.pause"}},"required":["do"],"type":"object"},{"additionalProperties":false,"properties":{"do":{"const":"timer.reset"}},"required":["do"],"type":"object"},{"additionalProperties":false,"properties":{"do":{"const":"stopwatch.start"}},"required":["do"],"type":"object"},{"additionalProperties":false,"properties":{"do":{"const":"stopwatch.stop"}},"required":["do"],"type":"object"},{"additionalProperties":false,"properties":{"do":{"const":"todo.add"},"important":{"type":"boolean"},"note":{"maxLength":4000,"type":"string"},"text":{"maxLength":500,"minLength":1,"type":"string"}},"required":["do","text"],"type":"object"},{"additionalProperties":false,"properties":{"do":{"const":"todo.complete"},"id":{"format":"uuid","type":"string"}},"required":["do","id"],"type":"object"},{"additionalProperties":false,"properties":{"do":{"const":"todo.delete"},"id":{"format":"uuid","type":"string"}},"required":["do","id"],"type":"object"},{"additionalProperties":false,"properties":{"do":{"const":"tracker.start"},"task":{"maxLength":500,"minLength":1,"type":"string"}},"required":["do","task"],"type":"object"},{"additionalProperties":false,"properties":{"do":{"const":"tracker.stop"}},"required":["do"],"type":"object"}]},"confirmation":{"additionalProperties":false,"properties":{"confirmedAt":{"format":"date-time","pattern":"Z$","type":"string"},"method":{"const":"client_agent_attestation"}},"required":["method","confirmedAt"],"type":"object"},"createdAt":{"format":"date-time","pattern":"Z$","type":"string"},"expiresAt":{"format":"date-time","pattern":"Z$","type":"string"},"id":{"format":"uuid","pattern":"^[0-9a-f-]{36}$","type":"string"},"schemaVersion":{"const":2}},"required":["schemaVersion","id","createdAt","expiresAt","confirmation","command"],"type":"object"},"resultDirectory":"agent-results","retry":{"identicalBytes":true,"sameId":true,"terminalRetentionDays":30,"uncertainOutcome":"stop_and_inspect_state"},"schemaVersion":2,"stateFile":"agent-state.json","statuses":["applied","no_change","rejected","indeterminate","conflict"],"temporalRule":"createdAt <= confirmedAt <= now < expiresAt; expiresAt-createdAt <= 600 seconds","transport":"local_files","trustBoundary":"Customer-approved desktop client with OS access to the user's Hop data directory"}}}