A voice-controlled AI assistant with computer use, screen analysis, email, weather, Spotify, WhatsApp, file management, and memory capabilities. Runs as an Electron desktop app with Python FastAPI backend.
JARVAN has 29 tools with inconsistent quality. Naming is generally verb-first (open_app, close_app, send_mail), which is good. However, descriptions vary wildly in quality: some are detailed and context-rich (see_screen, send_mail), while others are vague or generic (computer_use, calculator_compute). Critical gaps: NO input schemas are visible in the provided source code, only parameter names and descriptions appear in the tool registry. This is a hard failure for schema scoring. Many parameters lack type constraints (e.g., 'device' in send_to_device has an enum, but most string params have no format/length guidance). Error handling is minimal, most tools return generic {ok, error} tuples without recovery guidance. Duplicate tools exist (play_spotify_track vs play_track, spotify_control vs control_playback), violating single-responsibility. Output schemas are undocumented. The computer_use tool is dangerously broad (DESTRUCTIVE risk) with minimal guardrails.
Jarvan'ın tüm hafızasını (ChromaDB, Obsidian vault, memory.json) Google Drive'a yedekler. Kullanıcı 'hafızamı yedekle', 'yedeğimi al', 'backup yap' gibi şeyler dediğinde kullan. Sadece Mac'te çalışır (hafıza master cihazı).
Matematiksel hesaplamalar yapar.
Gmail'deki son mailleri listeler (gönderen, konu, tarih, kısa önizleme + mail id). Kullanıcı 'son mailim ne', 'okumamış mailler', 'X kişisinden mail var mı', 'bugün gelen mailler' gibi şeyler sorduğunda kullan. KESİNLİKLE computer_use veya browser çağırma — bu tool Gmail API kullanır, anında döner. ÖNEMLİ: Liste döner ama tam mail içeriği DÖNMEZ — sadece snippet (kısa özet). Kullanıcı 'şu maili tam oku', 'içeriği ne', 'detayını gör' derse `read_mail_body` ile mail id'sini geçirip tam içerik al. Gmail arama syntax örnekleri: 'from:burcu', 'subject:fatura', 'after:2026/01/01', 'is:unread', 'has:attachment'. Birden fazla kriter: 'from:burcu is:unread'.
Açık bir uygulamayı kapatır. Örnek: 'chrome kapat', 'spotify kapat'.
Bilgisayarı kontrol eder — ekran analizi, mouse/keyboard, dosya işlemleri, uygulama kontrolü gibi görevleri otomatik olarak yapar.
NO input schemas visible in source code. Tool registry shows parameter names and descriptions only; JSON Schema type definitions, constraints, and validation rules are absent. This violates the core requirement that every parameter must have a type and description.
Duplicate tools with identical functionality: play_spotify_track (tool_registry.py) vs play_track (spotify_server.py); spotify_control vs control_playback; get_current_track appears only once but naming is inconsistent across files. This violates single-responsibility and forces LLMs to reason about which variant to use.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | <=2025-11-25 | v2 |
Spotify oynatma kontrolü: pause, play, next, previous, shuffle_on, shuffle_off.
Klasör oluşturur.
Proje klasöründe dosya oluşturur.
Bilgisayarda dosya veya klasör arar. 'rapor.pdf nerede', 'masaüstündeki excel dosyası', 'proje klasörünü bul' gibi isteklerde kullan. Masaüstü, Belgeler, İndirmeler ve Home klasörlerinde otomatik tarar.
Google Drive'daki mevcut hafıza yedeklerini listeler. Kaç yedek var, en son ne zaman alınmış gösterir.
Şu an çalan şarkıyı döner.
start_gemini_task'tan dönen job_id'nin sonucunu kontrol eder.
Gelen kutusundaki dosyaları listeler — karşı cihazdan ne gelmiş gösterir.
Herhangi bir şehrin ANLIK ve YARINKİ hava durumunu (derecesiyle birlikte) SANIYELER İÇİNDE getirir. Kullanıcı hava durumu sorduğunda (eskişehir hava durumu vs) web aramasına yönelme, KESİNLİKLE BU ARACI ZORUNLU KULLAN.
Bir klasörün içindeki dosya ve klasörleri listeler. 'masaüstümde ne var', 'indirmeler klasörüne bak' gibi isteklerde kullan.
Kullanıcının bilgisayarında bir uygulamayı veya oyunu açar. Örnek: 'not defteri aç', 'chrome aç', 'CS2 aç'.
Tarayıcıda verilen URL'yi açar. Tam URL (https://...) ya da domain (metacritic.com/...) verilebilir. Spesifik sayfa/oyun/film isteğinde bu aracı kullan.
Spotify'da şarkı veya playlist arar ve çalar.
Spotify'da şarkı veya playlist arar ve çalar.
Bir dosyanın içeriğini okur. Metin, kod, markdown, PDF desteklenir. 'şu dosyayı oku', 'bu PDF ne diyor', 'o kod dosyasına bak' gibi isteklerde kullan.
Belirli bir mail'in tam içeriğini okur. check_mail'den dönen mail id'sini geçir.
Araştırma sonuçlarını markdown dosyası olarak kaydeder.
Kullanıcının o ANKİ bilgisayar ekranını çeker ve ne gördüğünü Türkçe 2-3 cümle olarak döner. Kullanıcı 'ekrana bak', 'şuna bak', 'görüyor musun', 'ekranda ne var', 'şu sayfa' gibi ekranla ilgili bir şey sorduğunda ZORUNLU bu aracı çağır. Tahmin yürütme, asla ekranda ne olduğunu uydurma — bu araç gerçek ekran görüntüsünü analiz eder ve sana metin olarak döner. Aracı çağırmadan ekran hakkında konuşma.
Gmail compose ekranını prefilled açar. `auto_send=true` ise tarayıcı yüklenince otomatik gönderir (Cmd+Enter), `auto_send=false` ise sadece doldurup açık bırakır (kullanıcı manuel gönderir). Kullanıcı 'gönder', 'at', 'yolla' gibi net gönderim sözcüğü kullanırsa auto_send=true; 'hazırla', 'göster', 'aç', 'doldur' gibi pasif istek varsa auto_send=false.
Bir dosya veya klasörü diğer cihaza gönderir (Mac→Windows veya Windows→Mac). Klasörler otomatik zip'lenir. Syncthing üzerinden iletilir, karşı Jarvan sesli bildirir. Önce find_file ile dosyayı bul, tam path'i bu tool'a ver.
WhatsApp'ta bir kişiye mesaj gönderir. Rehberdeki isim veya telefon numarası kullanılabilir.
Jarvan'ı uyku moduna alır. Arka planda otonom öğrenme döngüsü başlatır.
Spotify oynatma kontrolü: pause, play, next, previous, shuffle_on, shuffle_off.
Gemini AI'ye ağır araştırma görevleri gönderir. Arka planda çalışır, job_id döner.
computer_use tool is dangerously broad (DESTRUCTIVE risk) with minimal guardrails. Description is vague ('Bilgisayarı kontrol eder, ekran analizi, mouse/keyboard, dosya işlemleri, uygulama kontrolü gibi görevleri otomatik olarak yapar'). No input validation, no dry-run option, no confirmation step. Source shows a 300-second timeout and cooldown logic, but no permission checks or audit trail.
Output schemas are undocumented. No tool description specifies what fields are returned, what types they have, or how downstream tools should consume them. This forces LLMs to guess at response structure and breaks tool chaining.
Error handling is minimal and non-actionable. Most tools return generic {ok: false, error: string} tuples without recovery guidance. Example: calculator_compute returns 'hesap makinesi görevi başarısız' with no hint about what went wrong or what to retry. No error classification (retryable vs fatal).