> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hostlinku.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Factory Droid

> Tambahkan model Hostlinku sebagai customModels di ~/.factory/settings.json dan pakai di Droid CLI maupun aplikasi desktop Factory

[Droid](https://docs.factory.ai/cli/byok/overview) - agent coding dari Factory - mendukung **BYOK
custom models**. Model kustom dibaca dari `~/.factory/settings.json` dan tersedia di Droid CLI serta
aplikasi desktop Factory (bukan di platform web/mobile Factory). API key tetap lokal, tidak dikirim
ke server Factory.

### Simpan API key di environment

```bash theme={null}
export HOSTLINKU_API_KEY=sk-isi-api-key-kamu
```

Tambahkan ke `~/.zshrc` / `~/.bashrc` agar permanen. Droid membaca referensi `${HOSTLINKU_API_KEY}`
dari `settings.json`.

### Daftarkan model di settings.json

Buka (atau buat) `~/.factory/settings.json`, lalu tambahkan `customModels`:

```json theme={null}
{
  "customModels": [
    {
      "model": "claude-sonnet-4-6",
      "displayName": "Claude Sonnet 4.6 (Hostlinku)",
      "baseUrl": "https://api.hostlinku.com",
      "apiKey": "${HOSTLINKU_API_KEY}",
      "provider": "anthropic",
      "maxOutputTokens": 64000
    },
    {
      "model": "gpt-5-5",
      "displayName": "GPT-5.5 (Hostlinku)",
      "baseUrl": "https://api.hostlinku.com/v1",
      "apiKey": "${HOSTLINKU_API_KEY}",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 64000
    },
    {
      "model": "deepseek-v4-flash",
      "displayName": "DeepSeek V4 Flash (Hostlinku)",
      "baseUrl": "https://api.hostlinku.com/v1",
      "apiKey": "${HOSTLINKU_API_KEY}",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 32000
    }
  ]
}
```

| `provider` | Format API | Base URL Hostlinku |
| - | - | - |
| `anthropic` | Anthropic Messages | `https://api.hostlinku.com` (tanpa `/v1`) |
| `generic-chat-completion-api` | OpenAI Chat Completions | `https://api.hostlinku.com/v1` |

### Pilih model di Droid

Jalankan `droid`, ketik `/model`, lalu pilih model di bagian **Custom models** (nama sesuai
`displayName`). Request pertama tampil di console → **Log Permintaan**.

## Yang perlu diketahui

Model Claude lewat provider anthropic

Provider `anthropic` memakai Messages API, jadi `cache_control` diteruskan dan prompt caching
bekerja penuh. Cek penghematannya dengan `/cost` di Droid atau kolom *cache* di Log Permintaan.

* **Slug GPT dan model lain** (DeepSeek, GLM, Qwen, Kimi) paling kompatibel lewat
  `generic-chat-completion-api`. Provider `openai` di Droid memakai Responses API; Hostlinku
  melayani Responses secara *stateless* ([detail](https://docs.hostlinku.com/responses.md)), jadi pilih Chat Completions bila
  ragu.
* **`maxOutputTokens`** jangan melebihi batas output model di [katalog](https://docs.hostlinku.com/models.md).
* **Prompt caching untuk provider generic** bergantung pada model tujuan.

## Troubleshooting

| Gejala | Solusi |
| - | - |
| Model tidak muncul di `/model` | JSON tidak valid atau `provider` salah ketik - periksa dengan `jq . ~/.factory/settings.json`. |
| Error variabel tidak ditemukan | `HOSTLINKU_API_KEY` belum di-export di shell yang menjalankan `droid`. |
| `404` di semua request | Base URL tertukar: `anthropic` tanpa `/v1`, `generic-chat-completion-api` dengan `/v1`. |
| `404 model_not_found` | `model` harus slug persis dari `GET /v1/models`. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.