DocsReferensiAPI core

// Referensi

API core

Endpoint REST, WebSocket JSON-RPC, dan SSE dari neovarch serve.

neovarch serve menyediakan REST, WebSocket JSON-RPC 2.0, dan SSE di satu port. Aplikasi desktop dan HP memakai API ini; kamu juga bisa memakainya untuk skrip dan integrasi sendiri.

Endpoint bertanda v1.4.0 sudah ada di kode pengembangan tetapi belum ada di rilis v1.3.0.

Menyalakan dan autentikasi#

bash
neovarch serve --host 127.0.0.1 --port 9319
  • --port 0 memilih port bebas. Bawaan 9319.
  • --isolated adalah mode remote/HP: hanya token pairing bertanda tangan yang diterima.
  • Gateway tidak pernah berjalan tanpa token. Bila tidak diberi token, ia membuat satu dan mencetaknya.

Kirim token dengan salah satu cara:

text
Authorization: Bearer <token>
X-Neovarch-Session-Token: <token>
?token=<token>              (untuk WebSocket dan SSE)

GET /api/status bisa dibaca tanpa token.

REST: dasar#

MetodePathFungsi
GET/api/healthCek hidup
GET/api/statusVersi, model, status (publik)
GET/api/sessionsDaftar sesi
GET/api/sessions/{id}Detail sesi
GET/api/sessions/{id}/messagesPesan sesi
PATCH/api/sessions/{id}Ubah sesi (misalnya judul)
DELETE/api/sessions/{id}Hapus sesi
GET/api/sessions/searchCari sesi v1.4.0
GET, PUT/api/configBaca / ubah config.yaml
GET/api/config/defaultsNilai bawaan
GET/api/config/schemaSkema pengaturan v1.4.0
GET/api/model/infoModel aktif
GET/api/model/optionsProvider dan model yang tersedia
POST/api/model/setGanti model
GET/api/skillsDaftar skill
GET/api/skills/contentIsi SKILL.md v1.4.0
GET/api/tools/toolsetsDaftar alat
GET/api/profilesDaftar profil
GET/api/fs/list, /api/fs/read, /api/fs/defaultPenjelajah file hanya-baca

REST: provider dan .env v1.4.0#

MetodePathFungsi
GET/api/providers/custom-endpointsDaftar endpoint kustom
POST/api/providers/custom-endpointsSimpan endpoint (name, base_url, api_key, headers, allow_insecure_tls, model, make_default)
POST/api/providers/custom-endpoints/validateTes koneksi dan ambil /models
POST/api/providers/custom-endpoints/{id}/activateJadikan aktif
DELETE/api/providers/custom-endpoints/{id}Hapus
POST/api/providers/validateTes key preset
GET, PUT, DELETE/api/envBaca (disamarkan) / ubah / hapus nilai .env
POST/api/env/revealTampilkan satu nilai

REST: Kanban#

MetodePathFungsi
GET/api/plugins/kanban/boardPapan lengkap (kolom + tugas)
POST/api/plugins/kanban/tasksBuat tugas (title, body, assignee, priority)
PATCH/api/plugins/kanban/tasks/{id}Ubah tugas atau status
POST/api/plugins/kanban/tasks/{id}/commentsTambah komentar
GET, DELETE/api/plugins/kanban/tasks/{id}Detail / hapus v1.4.0
GET/api/plugins/kanban/tasks/{id}/logRiwayat tugas v1.4.0
POST/api/plugins/kanban/tasks/bulkUbah banyak tugas v1.4.0
GET/api/plugins/kanban/boards, /api/plugins/kanban/eventsDaftar papan, socket event v1.4.0

REST: Office, vault, tampilan, update v1.4.0#

MetodePathFungsi
GET/api/officeSnapshot Office (agents, feed, counts, kanban, vault)
GET/api/office/eventsSSE office.update
GET/api/memory/obsidianStatus vault
GET/api/obsidian/treePohon vault
GET/api/obsidian/noteCatatan + backlink + tautan obsidian://
GET/api/obsidian/graphGraf catatan
GET/api/obsidian/searchPencarian vault
GET, PUT/api/appearance{accent, base, on_accent}
GET/api/updateCek rilis terbaru
GET/api/network/addressesAlamat LAN, Tailscale, MagicDNS

REST: cron v1.4.0#

MetodePathFungsi
GET, POST/api/cron/jobsDaftar / buat (name, prompt, schedule, repeat)
GET, PUT, PATCH, DELETE/api/cron/jobs/{id}Detail / ubah / hapus
POST/api/cron/jobs/{id}/pause, /api/cron/jobs/{id}/resumeJeda / lanjutkan
POST/api/cron/jobs/{id}/triggerJalankan sekarang
GET/api/cron/jobs/{id}/runsRiwayat jalan

WebSocket JSON-RPC: /api/ws#

Satu objek JSON per frame. Frame pertama dari server adalah event gateway.ready.

json
{"jsonrpc": "2.0", "id": 1, "method": "session.create", "params": {"source": "script"}}
{"jsonrpc": "2.0", "id": 2, "method": "prompt.submit", "params": {"session_id": "<id>", "text": "halo"}}
KelompokMetode
Koneksiping, client.capabilities
Sesisession.list, session.active_list, session.create, session.resume, session.activate, session.status, session.title, session.save, session.interrupt
Chatprompt.submit
Persetujuanapproval.pending, approval.respond
Config & modelconfig.get, config.set, model.options, model.set, setup.status, setup.runtime_check
Laincommands.catalog, profiles.list
Baru v1.4.0office.snapshot, events.replay, network.addresses

Fitur yang tidak dimiliki core dijawab dengan hasil kosong yang valid, bukan error. Metode yang tidak dikenal dijawab -32601 dan dicatat di logs/unhandled.log.

Event#

Event dikirim sebagai notifikasi {"method": "event", "params": {"type", "session_id", "payload"}}:

EventIsi
message.start, message.delta, message.completeJawaban streaming dan akhir giliran (dengan usage)
reasoning.deltaTeks penalaran
tool.start, tool.completePemanggilan alat dan hasilnya
session.title, sessions.changedJudul sesi, daftar sesi berubah
approval.request, approval.cancelledPersetujuan baru / ditarik
office.update, kanban.changed, vault.changed, cron.changed, appearance.changedPerubahan global v1.4.0

Persetujuan#

Klien yang mengirim client.capabilities {"server_requests": true} menerima permintaan dari server:

json
{"jsonrpc": "2.0", "id": "srq-…", "method": "approval",
 "params": {"session_id": "…", "request_id": "apr-…", "command": "rm -rf build",
            "description": "This command deletes files recursively/forcibly.",
            "choices": ["once", "session", "deny"], "tool_name": "shell"}}

Jawab dengan {"jsonrpc": "2.0", "id": "srq-…", "result": {"choice": "once"}}. Batas waktu 300 detik.

Event berurutan dan SSE v1.4.0#

Di v1.4.0 setiap event membawa seq yang terus naik selama satu kali core menyala (boot_id):

  • WebSocket: sambung ulang dengan /api/ws?token=…&since=<seq>&boot_id=<id>. Event global yang terlewat diputar ulang (replayed: true). Bila tidak bisa, server mengirim resync.required dan klien memuat ulang data.
  • events.replay {since, boot_id, session_ids}: memutar ulang event sesi tertentu.
  • SSE GET /api/events: text/event-stream dengan id: <seq>, filter ?types=office.,kanban. dan ?session=…, lanjut dengan header Last-Event-ID, dan komentar keep-alive setiap 15 detik.
  • REST GET /api/events/replay?since=&boot_id=&session=.
  • ping mengembalikan {pong, seq, boot_id, ts} dan bisa dipakai sebagai keepalive.

Protokol lengkap HP ↔ PC: docs/remote-protocol.md.

Edit halaman ini di GitHub