Dokumentasi
Kiosapi bisa dipakai langsung di browser (Chat & Studio) atau via API — 100% OpenAI-compatible, cukup ganti base URL & API key. Pilih cara yang paling cocok untukmu.
Daftar isi
Antarmuka Web
Tidak perlu setup apapun — langsung pakai setelah login.
Chat
Buka /chat untuk ngobrol langsung dengan model AI pilihan. Tidak perlu API key atau konfigurasi — sesi web menggunakan sesi login kamu otomatis.
| Fitur | Keterangan |
|---|---|
| Pilih model | Dropdown di header — ganti model kapan saja dalam sesi |
| Model gratis | 50 request/hari tanpa top-up; badge Gratis di picker model |
| Streaming | Respons muncul token per token, langsung |
| Riwayat sesi | Percakapan tersimpan selama tab browser terbuka |
| Multimodal | Upload gambar untuk vision (model yang mendukung) |
Untuk penggunaan di luar browser (Cursor, VS Code, kode sendiri) lihat bagian API Reference di bawah.
Studio Kreator
Buka /dashboard/studio untuk membuat gambar & video AI langsung dari browser — tanpa kode, tanpa setup.
Gambar (text-to-image)
- 1. Pilih tab Gambar.
- 2. Tulis prompt — deskripsikan gambar yang ingin dibuat.
- 3. Pilih model (mis.
google/imagen-3) dan opsi kualitas. - 4. Klik Buat Gambar — hasil muncul dalam beberapa detik.
- 5. Download atau simpan ke galeri.
Video (text-to-video / image-to-video)
- 1. Pilih tab Video.
- 2. Tulis prompt. Opsional: upload gambar sebagai frame awal (image-to-video).
- 3. Pilih model, resolusi, dan durasi (detik).
- 4. Klik Buat Video — proses berjalan di background (~1–3 menit).
- 5. Progress muncul di Render Queue. Setelah selesai, video bisa diputar & diunduh.
API Reference
Untuk developer — pakai SDK OpenAI apa pun, cukup ganti base URL & API key.
1. Dapatkan API key
Masuk ke dashboard → Kunci API, beri nama (mis. "Cursor"), klik Buat key, lalu salin kios_live_… (ditampilkan sekali). Simpan di tempat aman.
2. Setel base URL
Di Cursor/Windsurf: Settings → Models → OpenAI API → Override base URL.
Base URL : https://api.kiosapi.id/v1
API Key : kios_live_xxxxxxxxxxxx3. Contoh request
curl
curl https://api.kiosapi.id/v1/chat/completions \
-H "Authorization: Bearer kios_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-4-6",
"messages": [{ "role": "user", "content": "Halo!" }]
}'Python (SDK OpenAI)
from openai import OpenAI
client = OpenAI(
base_url="https://api.kiosapi.id/v1",
api_key="kios_live_xxxx",
)
resp = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{"role": "user", "content": "Halo!"}],
)
print(resp.choices[0].message.content)JavaScript / TypeScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.kiosapi.id/v1",
apiKey: "kios_live_xxxx",
});
const resp = await client.chat.completions.create({
model: "meta/llama-3.1-8b",
messages: [{ role: "user", content: "Halo!" }],
});
console.log(resp.choices[0].message.content);4. Streaming
Tambahkan "stream": true untuk respons token-by-token (SSE), seperti OpenAI.
stream = client.chat.completions.create(
model="deepseek/deepseek-v4-flash",
messages=[{"role": "user", "content": "Tulis puisi singkat"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")5. Model & harga
Lihat harga lengkap di tabel harga. Endpoint GET /v1/models mengembalikan daftar model. Klik ID untuk menyalin — tempel persis seperti itu sebagai nama model di Cursor/Windsurf.
6. Studio API — gambar & video
Selain teks, Kiosapi punya API generasi gambar (sinkron), video (asinkron), musik (klip instrumental sinkron atau lagu bervokal asinkron), dan text-to-speech (sinkron). Ditagih per gambar / per detik atau per klip / per lagu / per 1.000 karakter — lihat harga media. Filter keamanan provider selalu aktif; biaya hanya ditagih saat berhasil.
Gambar — POST /v1/images/generations
Sinkron: respons langsung berisi gambar base64. option = tier ukuran/kualitas; n = jumlah gambar (1–4); aspect_ratio opsional.
curl https://api.kiosapi.id/v1/images/generations \
-H "Authorization: Bearer kios_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "google/imagen-3",
"prompt": "kucing oranye memakai topi koki, fotorealistik",
"option": "standard",
"n": 1
}'
# Respons 200:
# { "created": ..., "model": "google/imagen-3",
# "data": [{ "b64_json": "<base64>", "mime": "image/png" }],
# "kiosapi": { "option": "standard", "count": 1, "cost_rupiah": 2000 } }Video — POST /v1/videos/generations
Asinkron: mengembalikan 202 + job_id. option = tier resolusi; duration_seconds panjang klip. Untuk image-to-video, sertakan image (base64) + image_mime.
curl https://api.kiosapi.id/v1/videos/generations \
-H "Authorization: Bearer kios_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "alibaba/wan2.7-t2v",
"prompt": "ombak pantai saat matahari terbenam, sinematik",
"option": "standard",
"duration_seconds": 5
}'
# Respons 202:
# { "job_id": "uuid", "status": "running",
# "poll_url": "https://api.kiosapi.id/v1/jobs/uuid", "estimate_rupiah": 22500 }Pantau job — GET /v1/jobs/:id
curl https://api.kiosapi.id/v1/jobs/uuid \
-H "Authorization: Bearer kios_live_xxxx"
# running: { "status": "running" }
# selesai: { "status": "succeeded", "video_url": "...", "expires_at": "...", "cost_rupiah": 22500 }
# gagal: { "status": "failed", "error": "..." }
# (job musik mengembalikan "audio_url", bukan "video_url")Musik — POST /v1/music/generations
Dua perilaku: google/lyria-2 (klip instrumental 30 dtk, sinkron — respons 200 berisi audio base64) dan minimax/music-2.6 (lagu utuh bervokal hingga ±5 menit, asinkron — respons 202 + job_id, render 1–3 menit). Untuk lagu bervokal, sertakan lyrics (penanda [Verse]/[Chorus]) atau is_instrumental: true. Lagu yang selesai otomatis tersimpan di galeri dan bisa diunduh dari audio_url.
curl https://api.kiosapi.id/v1/music/generations \
-H "Authorization: Bearer kios_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax/music-2.6",
"prompt": "pop akustik Indonesia yang hangat, vokal wanita",
"lyrics": "[Verse]\nPagi cerah di kota\n[Chorus]\nBersama kita bisa"
}'
# Respons 202 → poll GET /v1/jobs/:id sampai:
# { "status": "succeeded", "audio_url": "...", "cost_rupiah": 6500 }Suara (TTS) — POST /v1/audio/speech
Kompatibel OpenAI: kirim input + voice, respons berupa bytes audio mentah (mp3). Model MiniMax punya 9 suara asli bahasa Indonesia (mis. Indonesian_CalmWoman, Indonesian_CaringMan); model OpenAI memakai alloy…shimmer. Biaya per 1.000 karakter, dilaporkan di header X-Kiosapi-Cost-IDR.
curl https://api.kiosapi.id/v1/audio/speech \
-H "Authorization: Bearer kios_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax/speech-2.8-turbo",
"input": "Selamat datang di Kiosapi!",
"voice": "Indonesian_CalmWoman"
}' --output suara.mp3Contoh kode — gambar (Python)
import base64, requests
res = requests.post(
"https://api.kiosapi.id/v1/images/generations",
headers={"Authorization": "Bearer kios_live_xxxx"},
json={"model": "google/imagen-3", "prompt": "kucing oranye memakai topi koki",
"option": "standard", "n": 1},
)
img = res.json()["data"][0]["b64_json"]
with open("out.png", "wb") as f:
f.write(base64.b64decode(img))Contoh kode — video + polling (JavaScript)
const base = "https://api.kiosapi.id";
const headers = { Authorization: "Bearer kios_live_xxxx", "Content-Type": "application/json" };
// 1) submit job
const submit = await fetch(`${base}/v1/videos/generations`, {
method: "POST", headers,
body: JSON.stringify({ model: "alibaba/wan2.7-t2v", prompt: "ombak pantai saat senja",
option: "standard", duration_seconds: 5 }),
});
const { job_id } = await submit.json();
// 2) poll until done (~5s interval)
let job;
do {
await new Promise((r) => setTimeout(r, 5000));
job = await (await fetch(`${base}/v1/jobs/${job_id}`, { headers })).json();
} while (job.status === "running");
if (job.status === "succeeded") console.log(job.video_url);Model media & opsi
| Model ID | Tipe | Opsi (option) |
|---|---|---|
openai/gpt-image-1 | gambar | 1024x1024:low, 1024x1024:medium, 1024x1024:high, 1536x1024:medium, 1024x1536:medium |
google/imagen-3 | gambar | standard |
google/imagen-3-fast | gambar | standard |
google/nano-banana-2 | gambar | standard |
alibaba/wan-2.7-image-pro | gambar | standard |
minimax/image-01 | gambar | standard |
zai/glm-image | gambar | standard |
xai/grok-imagine-image | gambar | standard |
xai/grok-imagine-image-quality | gambar | standard |
google/veo-3 | video | 720p, 1080p |
alibaba/wan2.7-t2v | video | standard |
alibaba/happyhorse-1.0-t2v | video | standard |
alibaba/wan2.7-i2v | video (i2v) | standard |
minimax/hailuo-2.3 | video | 768p-6s, 768p-10s, 1080p-6s |
minimax/hailuo-2.3-fast-i2v | video (i2v) | 768p-6s, 768p-10s, 1080p-6s |
zai/cogvideox-3 | video | standard |
xai/grok-imagine-video | video | standard |
xai/grok-imagine-video-1.5 | video | standard |
google/lyria-2 | gambar | standard |
minimax/music-2.6 | gambar | song |
openai/tts-1 | gambar | standard |
openai/tts-1-hd | gambar | standard |
minimax/speech-2.8-turbo | gambar | standard |
minimax/speech-2.8-hd | gambar | standard |
mistral/voxtral-tts | gambar | standard |
xai/grok-tts | gambar | standard |
xai/grok-stt | gambar | standard |
openai/whisper-1 | gambar | standard |
mistral/voxtral-transcribe | gambar | standard |
zai/glm-asr | gambar | standard |
alibaba/qwen3-asr-flash | gambar | standard |
Kode error media
| HTTP | code | Arti |
|---|---|---|
| 401 | authentication_error | API key / sesi tidak valid |
| 400 | model_not_found | Model tak dikenal atau disembunyikan |
| 400 | invalid_request_error | Opsi (`option`) tidak valid |
| 402 | insufficient_balance | Saldo kurang — top up |
| 402 | spend_cap_reached | Batas pengeluaran bulanan tercapai |
| 422 | prompt_blocked | Prompt ditolak moderasi |
| 422 | output_blocked | Hasil ditolak moderasi |
| 422 | generation_refused | Provider menolak (filter keamanan) |
| 429 | rate_limit_exceeded | Terlalu banyak permintaan |
| 429 | abuse_throttled | Akun dibatasi sementara (pelanggaran berulang) |
| 504 | generation_timeout | Pembuatan terlalu lama |
| 502 | upstream_unavailable | Layanan provider tak dapat dihubungi |
Spesifikasi OpenAPI 3.1 (model & opsi media digenerate dari katalog live) ada di api.kiosapi.id/openapi.json. Panduan untuk agen AI: /llms.txt.
7. Reranking
Urutkan ulang daftar dokumen berdasar relevansi ke sebuah query — self-hosted (bukan reseller pihak ketiga), bentuk request/response ikut standar Cohere supaya tooling RAG (LangChain, LlamaIndex, dst) bisa langsung pakai Kiosapi sebagai drop-in replacement. Ditagih per 1.000.000 token input — lihat harga.
Rerank — POST /v1/rerank
top_n opsional (default: semua dokumen diberi skor & diurutkan); return_documents opsional (default false) — kalau true, tiap hasil menyertakan teks dokumen aslinya.
curl https://api.kiosapi.id/v1/rerank \
-H "Authorization: Bearer kios_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "baai/bge-reranker-base",
"query": "apa itu kucing?",
"documents": [
"Kucing adalah hewan mamalia berkaki empat.",
"Mobil listrik semakin populer di Indonesia."
],
"return_documents": true
}'
# Respons 200:
# { "model": "baai/bge-reranker-base",
# "results": [
# { "index": 0, "relevance_score": 0.9998, "document": { "text": "Kucing adalah..." } },
# { "index": 1, "relevance_score": 0.0000373, "document": { "text": "Mobil listrik..." } }
# ] }8. Embeddings
Ubah teks jadi vektor untuk pencarian semantik / RAG — kompatibel OpenAI, cukup ganti base URL & API key. Ditagih per 1.000.000 token input — lihat harga.
Embedding — POST /v1/embeddings
curl https://api.kiosapi.id/v1/embeddings \
-H "Authorization: Bearer kios_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/text-embedding-3-small",
"input": "Selamat datang di Kiosapi!"
}'
# Respons 200:
# { "object": "list", "model": "openai/text-embedding-3-small",
# "data": [{ "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456, ...] }],
# "usage": { "prompt_tokens": 6, "total_tokens": 6 } }9. Vector DB
Database vektor untuk RAG — self-hosted (bukan reseller pihak ketiga), bentuk request/response ikut standar Pinecone. Bikin index gratis (tanpa saldo); insert, pencarian, dan penyimpanan yang dibayar — lihat harga.
Bikin index — POST /v1/vector-indexes
curl -X POST https://api.kiosapi.id/v1/vector-indexes \
-H "Authorization: Bearer kios_live_xxxx" \
-H "Content-Type: application/json" \
-d '{"name": "artikel-saya"}'
# Respons 201:
# { "name": "artikel-saya", "dimension": 1536, "metric": "cosine",
# "vector_count": 0, "created_at": "..." }Insert vektor — POST /v1/vector-indexes/:name/vectors/upsert
values wajib tepat 1536 angka (cocok dengan openai/text-embedding-3-small) — gunakan endpoint Embeddings di atas untuk menghasilkannya.
curl -X POST https://api.kiosapi.id/v1/vector-indexes/artikel-saya/vectors/upsert \
-H "Authorization: Bearer kios_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"vectors": [
{ "id": "artikel-1", "values": [0.0123, -0.0456, ...], "metadata": { "kategori": "berita" } }
]
}'
# Respons 200: { "upserted_count": 1 }Cari vektor terdekat — POST /v1/vector-indexes/:name/query
top_k opsional (default 10, maks 100); filter opsional — exact-match per key metadata (mis. {"kategori": "berita"}).
curl -X POST https://api.kiosapi.id/v1/vector-indexes/artikel-saya/query \
-H "Authorization: Bearer kios_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"vector": [0.0123, -0.0456, ...],
"top_k": 5,
"include_metadata": true
}'
# Respons 200:
# { "matches": [{ "id": "artikel-1", "score": 0.87, "metadata": { "kategori": "berita" } }] }Hapus vektor / index — POST .../vectors/delete & DELETE /v1/vector-indexes/:name
curl -X POST https://api.kiosapi.id/v1/vector-indexes/artikel-saya/vectors/delete \
-H "Authorization: Bearer kios_live_xxxx" -H "Content-Type: application/json" \
-d '{"delete_all": true}'
curl -X DELETE https://api.kiosapi.id/v1/vector-indexes/artikel-saya \
-H "Authorization: Bearer kios_live_xxxx"10. Saldo & top-up
Model gratis tidak memotong saldo — kuota 50 request/hari per akun (reset 07:00 WIB), wajib email terverifikasi. Model berbayar memotong saldo rupiah per token, tanpa batas harian. Isi saldo (QRIS, e-wallet, virtual account, kartu) mulai Rp10.000 — saldo masuk otomatis setelah bayar.
11. Batas & error
- • Rate limit free: 5 req/menit · paid: 60 req/menit (HTTP 429).
- • Free tier: 50 request/hari per akun (reset 07:00 WIB), wajib email terverifikasi.
- • Free tier: maksimal output ~2048 token & input ~24k karakter per request.
- • 401 = API key salah · 400 = model tak dikenal · 402 = saldo kurang.
Integrasi
12. Editor & CLI tools
Karena OpenAI-compatible (plus endpoint Anthropic untuk Claude Code), Kiosapi bisa dipakai di hampir semua tool. Base URL & model:
Base URL (OpenAI) : https://api.kiosapi.id/v1
Base URL (Anthropic) : https://api.kiosapi.id (Claude Code)
Model : mis. anthropic/claude-sonnet-4-6, deepseek/deepseek-v4-flashCline / Roo Code / Continue (VS Code)
Pilih provider OpenAI Compatible → Base URL https://api.kiosapi.id/v1, API key kios_live_…, model ID Kiosapi.
Claude Code (format Anthropic)
export ANTHROPIC_BASE_URL=https://api.kiosapi.id
export ANTHROPIC_API_KEY=kios_live_xxxx
export ANTHROPIC_MODEL=anthropic/claude-sonnet-4-6
export ANTHROPIC_SMALL_FAST_MODEL=anthropic/claude-haiku-4-5
claudeWajib set model ke ID anthropic/* Kiosapi. Mode agent (tools) & streaming jalan penuh.
Codex CLI (~/.codex/config.toml)
model = "anthropic/claude-sonnet-4-6"
model_provider = "kiosapi"
[model_providers.kiosapi]
name = "Kiosapi"
base_url = "https://api.kiosapi.id/v1"
env_key = "KIOSAPI_API_KEY"
wire_api = "chat"Aider
aider --openai-api-base https://api.kiosapi.id/v1 \
--openai-api-key kios_live_xxxx \
--model deepseek/deepseek-v4-flash- • Zed / Chat UI (Open WebUI, LibreChat, Chatbox, TypingMind): isi base URL OpenAI
https://api.kiosapi.id/v1+ API key + ID model. - • Cursor / Windsurf: chat dengan model custom jalan, tetapi sebagian fitur Agent/Tab dirutekan ke server mereka sendiri — untuk agent penuh pakai Cline/Roo Code.
- • GitHub Copilot: tidak didukung (terkunci ke backend GitHub).
13. Bahasa lain
Endpoint OpenAI-compatible — pakai SDK OpenAI di bahasa apa pun, cukup arahkan base URL ke https://api.kiosapi.id/v1. Atau panggil HTTP langsung.
kios_live_… di kode frontend/browser — mudah dicuri.PHP
$ch = curl_init('https://api.kiosapi.id/v1/chat/completions');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer kios_live_xxxx',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'model' => 'openai/gpt-4o',
'messages' => [['role' => 'user', 'content' => 'Halo!']],
]),
]);
$res = json_decode(curl_exec($ch), true);
echo $res['choices'][0]['message']['content'];Go (sashabaranov/go-openai)
cfg := openai.DefaultConfig("kios_live_xxxx")
cfg.BaseURL = "https://api.kiosapi.id/v1"
client := openai.NewClientWithConfig(cfg)
resp, _ := client.CreateChatCompletion(context.Background(), openai.ChatCompletionRequest{
Model: "openai/gpt-4o",
Messages: []openai.ChatCompletionMessage{{Role: "user", Content: "Halo!"}},
})
fmt.Println(resp.Choices[0].Message.Content)Ruby (ruby-openai)
client = OpenAI::Client.new(
access_token: "kios_live_xxxx",
uri_base: "https://api.kiosapi.id/v1"
)
resp = client.chat(parameters: {
model: "openai/gpt-4o",
messages: [{ role: "user", content: "Halo!" }]
})
puts resp.dig("choices", 0, "message", "content")Java (HttpClient)
var body = """
{"model":"openai/gpt-4o","messages":[{"role":"user","content":"Halo!"}]}
""";
var req = HttpRequest.newBuilder(URI.create("https://api.kiosapi.id/v1/chat/completions"))
.header("Authorization", "Bearer kios_live_xxxx")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body)).build();
var res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());C# / .NET (HttpClient)
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer kios_live_xxxx");
var payload = new {
model = "openai/gpt-4o",
messages = new[] { new { role = "user", content = "Halo!" } }
};
var res = await http.PostAsJsonAsync(
"https://api.kiosapi.id/v1/chat/completions", payload);
Console.WriteLine(await res.Content.ReadAsStringAsync());Kiosapi CLI
CLI resmi berbahasa Indonesia — agen koding, tim multi-agen, Skills, MCP, multimodal.
14. Install & perintah
kiosapi (v0.2.1) — CLI resmi berbahasa Indonesia. Butuh Node.js ≥ 20; tanpa dependensi runtime lain.
Pasang & jalankan
# langsung (tanpa install)
npx kiosapi
# atau install global
npm i -g kiosapi
kiosapiMasuk (sekali)
kiosapi masuk # tempel kios_live_… (ditampilkan sebagai ****)
kiosapi periksa # cek konektivitas, versi, & saldo
kiosapi --version # tampilkan versi (alias: kiosapi versi / -v)
kiosapi perbarui # update ke versi terbaruSetup manual (config file)
# Linux/macOS : ~/.kiosapi/config.json
# Windows : %USERPROFILE%\.kiosapi\config.json
{
"apiKey": "kios_live_xxxxxxxxxxxx",
"baseUrl": "https://api.kiosapi.id",
"defaultModel": "anthropic/claude-sonnet-4-6"
}
# Atau via env (untuk CI/script)
export KIOSAPI_API_KEY=kios_live_xxxx
kiosapi tanya "halo"Konfigurasi proyek (.kiosapi/config.json)
Semua setting per-proyek hidup di folder .kiosapi/ (config, skills, memory, tim) dan dilindungi — agen tak bisa menimpa/menghapusnya. Buat lewat kiosapi init (wizard) atau kiosapi setel -p <key> <value>. File kiosapi.json lama di root masih dibaca.
Semua kunci opsional — isi hanya yang ingin di-override. Contoh lengkap (semua kunci yang didukung):
# .kiosapi/config.json — semua kunci opsional
{
"model": "deepseek/deepseek-v4-flash",
"mode": "buat",
"otomatis": false,
"maxSteps": 60,
"maxTokens": 80000,
"projectContext": "REST API Express + TypeScript. Tes di src/__tests__/. Pakai Zod untuk validasi.",
"tim": {
"manajer": "anthropic/claude-sonnet-4-6",
"perencana": "anthropic/claude-sonnet-4-6",
"koder": "deepseek/deepseek-v4-pro",
"peninjau": "openai/gpt-4o-mini"
},
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "ghp_xxx" }
}
}
}Referensi kunci
| Kunci | Tipe | Fungsi |
|---|---|---|
model | string | Model default untuk proyek ini (override default global) |
mode | "rencana" | "edit" | "buat" | Mode agen default saat masuk sesi |
otomatis | boolean | Auto-approve semua tool (lewati konfirmasi) |
maxSteps | number | Batas langkah tool per giliran agen (default 60) |
maxTokens | number | Anggaran token per tugas — agen berhenti bila terlewat |
projectContext | string | Briefing yang di-inject ke setiap agen (stack, konvensi, tujuan) |
tim.manajer | string | Model untuk manajer (yang memutuskan peran). Pilih model pintar |
tim.perencana | string | Model untuk perencana (susun rencana) |
tim.koder | string | Model untuk koder (tulis & jalankan kode) |
tim.peninjau | string | Model untuk peninjau (review hasil) |
mcpServers | object | Server MCP per-proyek (command/args/env) — tools muncul di agen & tim |
Presedence model tim: flag CLI (--koder dst) > tim.<peran> > model proyek > default global. Tiap peran yang tak diisi memakai model. Edit cepat tanpa wizard: kiosapi setel -p <key> <value> (mis. kiosapi setel -p budget 80000).
Perintah utama
| Perintah | Fungsi |
|---|---|
kiosapi | Sesi interaktif (login bila perlu) |
masuk / keluar | Simpan / hapus API key |
periksa | Cek konektivitas + saldo |
tanya "…" | Tanya sekali (streaming); dukung pipe stdin |
ngobrol | Mode percakapan multi-turn (REPL) |
rencana "…" | Agen read-only — telusuri kode & susun rencana |
edit "…" | Agen tulis file — ubah kode tanpa jalankan perintah |
buat "…" | Agen otonom — tulis file & jalankan perintah shell |
init | Wizard setup proyek lokal → .kiosapi/config.json |
setel -p <k> <v> | Atur config proyek (model/mode/budget/konteks…) |
tim "…" | Manajer pilih peran (perencana/koder/peninjau) yang perlu |
tim --peran <peran> "…" | Jalankan satu peran langsung (lewati manajer) |
tim --pakai <nama> "…" | Jalankan tim kustom tersimpan |
tim --buat <nama> [-g] | Buat tim kustom (wizard); -g = global |
tim --daftar | Tampilkan semua tim kustom (project + global) |
lanjut | Lanjutkan sesi / tim dari checkpoint terakhir |
balik | Kembalikan file yang diubah agen giliran terakhir (git) |
skill buat <nama> [-g] | Buat skill baru; -g = global |
skill <nama> [args] | Jalankan skill ($ARGUMENTS/{{1}} di prompt) |
skills | Lihat semua skill (project + global + bawaan) |
mcp | Lihat server MCP dikonfigurasi |
mcp sambung | Test koneksi MCP + tampilkan tools tersedia |
mcp init | Buat ~/.kiosapi/mcp.json dengan contoh konfigurasi |
gambar "…" [-o out.png] | Buat gambar AI (ditagih per gambar) |
video "…" | Buat video AI asinkron (ditagih per detik / per klip) |
musik "…" [--lirik "…"] | Buat musik / lagu bervokal (--instrumental utk tanpa vokal) |
suara "…" [--suara <id>] | Text-to-speech → mp3 (suara Indonesia: Indonesian_CalmWoman dll.) |
lihat <file> "…" | Vision: analisis gambar lokal |
model [--tools] | Daftar model (🔧 = dukung tool/agen) |
setel model | Pilih model default (picker bernomor) |
saldo | Lihat saldo saat ini |
pakai [--hari N] | Ringkasan pemakaian (default 7 hari) |
isi | Buka halaman top-up di browser |
sambung <tool> | Konfigurasi Kiosapi di aider/cursor/opencode dll |
Mode agen
| Mode | Bisa baca | Bisa tulis file | Bisa jalankan perintah |
|---|---|---|---|
rencana | ✓ | — | — |
edit | ✓ | ✓ | — |
buat | ✓ | ✓ | ✓ |
Sesi interaktif & slash commands
$ kiosapi
buat › bikin endpoint GET /health di Express + tes Jest-nya
buat › @src/routes/auth.ts perbaiki error handler ini
buat › @git:diff ada yang perlu di-refactor?
buat › /commit # buat commit git
buat › /diff HEAD~1 # git diff dengan argumen opsional
buat › /shell npm test # jalankan perintah shell langsung
buat › /model # picker model bernomor
buat › /mode rencana # ganti mode agen
buat › /tim tambah auth JWT # manajer pilih peran & jalankan
buat › /tim koder perbaiki bug # jalankan satu peran langsung
buat › /budget 50000 # anggaran token/giliran (agen berhenti bila lewat)
buat › /undo # batalkan giliran terakhir (dari riwayat)
buat › /balik # kembalikan file yang diubah agen (git)
buat › /ringkas # ringkas riwayat (hemat token)
buat › /bantuan # daftar semua slash command@mention — injeksi konteks
buat › @src/routes/auth.ts cek bug di fungsi ini
buat › @src/**/*.test.ts ada tes yang gagal?
buat › @git:diff # git diff HEAD
buat › @git:status # git status --short
buat › @git:log # git log --oneline -10
buat › @git:staged # git diff --stagedMulti-agen (tim) — manajer
Manajer menentukan peran MINIMAL yang perlu untuk tugasmu (tak selalu seluruh pipeline): Perencana (read-only, susun rencana), Koder (tulis file & jalankan), Peninjau (review). Temuan peninjau bisa langsung diperbaiki (loop), dan manajer melacak aktivitas agar tak mengulang kerja. Kamu juga bisa memanggil satu peran langsung.
kiosapi tim "bikin endpoint GET /health + tes Jest" # manajer yang memilih
kiosapi tim --peran koder "perbaiki bug di src/auth.ts" # langsung ke koder
# model berbeda per peran (atau set di .kiosapi/config.json → "tim")
kiosapi tim "refactor modul auth + tes" \
--perencana qwen/qwen3-30b \
--koder deepseek/deepseek-v4-pro \
--peninjau openai/gpt-4o-miniTim checkpoint & lanjutkan
Setiap langkah tim disimpan ke ~/.kiosapi/tim-checkpoint.json. Jika sesi terputus, jalankan kiosapi lanjut — CLI menawarkan resume dari langkah terakhir tanpa mengulang dari awal.
kiosapi lanjut
# Sesi tim tersimpan ditemukan
# Tugas : bikin REST API penuh dengan auth + tes
# Progress : 3/7 langkah selesai
# Langkah selesai:
# ✓ 1. Buat struktur folder + package.json
# ✓ 2. Implementasi model User + migrasi DB
# ✓ 3. Endpoint auth (register/login/refresh)
# Lanjutkan? [y/t/n]Skills — workflow tersimpan
Skills adalah workflow agen yang kamu simpan sebagai file Markdown — cocok untuk tugas berulang. CLI menyertakan skill bawaan siap pakai (review, tes, dokumentasi, jelaskan) yang bisa kamu timpa dengan skill project/global bernama sama.
# Buat skill di project (.kiosapi/skills/fix-tests.md)
kiosapi skill buat fix-tests
# Buat skill global (-g → ~/.kiosapi/skills/, tersedia di semua proyek)
kiosapi skill buat -g review-security
# Jalankan (argumen masuk ke $ARGUMENTS / {{1}})
kiosapi skill fix-tests
kiosapi skill fix-tests "src/auth/"
# Bawaan + dari sesi interaktif
kiosapi skill review # tinjau git diff
buat › /skills
buat › /skill fix-tests src/auth/Format frontmatter skill:
---
description: Perbaiki semua tes yang gagal dan jalankan ulang
mode: buat # rencana | edit | buat
# otomatis: true
# model: deepseek/deepseek-v4-flash
# tim: true # jalankan lewat manajer multi-agen
# peran: koder # atau satu peran langsung: perencana | koder | peninjau
---
Jalankan tes untuk {{1}} dan perbaiki yang gagal:
- Analisis pesan error (pakai $ARGUMENTS atau {{1}} {{2}} untuk argumen)
- Perbaiki satu per satu sampai semua lulus
- Jalankan ulang untuk konfirmasi semua hijauMemori proyek, anggaran token & revert
Memori proyek (.kiosapi/memory.md) menyimpan fakta durable yang ditemukan agen (lokasi kode, konvensi, perintah build) dan disuntik di awal tiap sesi — agar agen tak mengeksplorasi ulang dari nol dan hemat token. Diisi otomatis oleh agen, bisa kamu edit/commit.
# Anggaran token per tugas — agen berhenti rapi bila terlewat (checkpoint tersimpan)
kiosapi buat --budget 80000 "refactor modul auth"
buat › /budget 50000
# Revert: kembalikan file yang diubah agen pada giliran terakhir (via git)
kiosapi balik # tracked → HEAD, file baru dihapus (dengan konfirmasi)
buat › /balikSeluruh folder .kiosapi/ (config, skills, memory, tim) terlindung: tool file maupun perintah shell agen tak bisa menimpa/menghapusnya.
MCP — Model Context Protocol
MCP memungkinkan agen memanggil tools dari server eksternal (filesystem, GitHub API, tools kustom). Transport: stdio (proses lokal). Semua tools MCP muncul otomatis di setiap sesi agen dan tim mode.
# Scaffold file config
kiosapi mcp init # buat ~/.kiosapi/mcp.json
# Test koneksi + lihat tools tersedia
kiosapi mcp sambung~/.kiosapi/mcp.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "ghp_xxxxxxxxxxxx" }
}
}
}Katalog tool agen bawaan
| Tool | Fungsi | Mode |
|---|---|---|
baca_file | Baca isi file teks | semua |
daftar_file | Daftar isi folder | semua |
cari | Cari teks di semua file | semua |
lihat_gambar | Analisis gambar lokal (vision) | semua |
tulis_file | Buat / timpa file | edit, buat |
edit_file | Ganti potongan teks unik di file | edit, buat |
hapus_file | Hapus file | edit, buat |
pindah_file | Pindahkan / ganti nama file atau folder | edit, buat |
buat_gambar | Buat gambar AI dan simpan ke file (berbayar) | edit, buat |
jalankan | Jalankan perintah shell | buat |
selesai | Tandai tugas selesai dengan ringkasan | semua |
Contoh satu-baris (skrip/CI)
kiosapi tanya "ringkas ini" < README.md
kiosapi buat --otomatis "tambah endpoint /health + tes"
kiosapi tanya -m deepseek/deepseek-v4-flash "jelaskan kode" < src/auth.ts
kiosapi gambar "logo kopi minimalis, flat design" -o logo.png