omp packages

@aarestu/pi-vikey1.1.0

Pi Coding Agent (pi.dev) extension to access LLM models via Vikey.ai (Claude 3.7, DeepSeek R1/V3, GPT-4o, Gemini 2.0, Qwen, etc.)

aarestu Published 1 month ago MIT ~150 downloads/mo

Untested on omp

This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

pi-vikey โ€” Ekstensi Vikey.ai untuk Pi Coding Agent

npm version

Ekstensi resmi untuk menghubungkan Pi Coding Agent (pi.dev) dengan Vikey.ai โ€” AI inference gateway dengan pembayaran lokal Indonesia (QRIS/IDR).

Dengan ekstensi ini, Anda bisa mengakses model LLM unggulan langsung dari Pi CLI:

Provider Model Unggulan
๐ŸŸฃ Anthropic Claude 3.7 Sonnet, Claude 3.5 Sonnet/Haiku
๐Ÿ”ต DeepSeek DeepSeek R1 (Reasoner), DeepSeek V3
๐ŸŸข OpenAI GPT-4o, GPT-4o-mini, o3-mini, o1
๐Ÿ”ด Google Gemini 2.0 Flash, Gemini 2.0 Pro
๐ŸŸก Open Source Qwen 2.5 Coder 32B, Llama 3.3 70B

๐ŸŒ Website: https://vikey.ai/

๐Ÿ“– Dokumentasi API: https://api.vikey.ai/docs


Daftar Isi


Persyaratan

  • Pi Coding Agent (>= 0.85.0) โ€” Install Pi
  • Node.js >= 18 (untuk script setup CLI)
  • API Key Vikey.ai โ€” Daftar di vikey.ai โ†’ Dashboard โ†’ API Keys

Instalasi Cepat

Opsi A: Via npm (Direkomendasikan)

# Install global
npm install -g @aarestu/pi-vikey

# Setup provider (opsional โ€” ekstensi sudah auto-register saat dipasang)
pi-vikey setup

# Set API key (satu pintu)
pi            # buka TUI
/login vikey  # tempel API key -> tersimpan di ~/.pi/agent/auth.json

Opsi B: Manual (Clone / Download)

# Clone repositori
git clone https://github.com/aarestu/pi-vikey.git
cd pi-vikey

# Install dependensi
npm install

# Build
npm run build

# Jalankan setup
node scripts/setup.js

# Atau langsung ke .pi/extensions (global)
cp -r dist ~/.pi/agent/extensions/pi-vikey

# Set API key (satu pintu) โ€” di dalam pi:
#   /login vikey

Opsi C: Ekstensi Global Pi

# Clone repo
git clone https://github.com/aarestu/pi-vikey.git
cd pi-vikey
npm install && npm run build

# Pasang sebagai ekstensi global Pi
mkdir -p ~/.pi/agent/extensions/pi-vikey
cp -r dist/* ~/.pi/agent/extensions/pi-vikey/

# Atau symlink untuk development
ln -s "$(pwd)" ~/.pi/agent/extensions/pi-vikey

Kemudian restart Pi atau ketik /reload.


Setup API Key

Cara utama โ€” satu pintu lewat /login vikey:

pi            # buka Pi TUI
/login vikey  # pilih provider vikey, lalu tempel API key Anda

Kredensial tersimpan otomatis di ~/.pi/agent/auth.json dan langsung dipakai oleh provider, perintah /vikey*, dan refresh daftar model. Tidak perlu environment variable.

# Verifikasi kredensial tersimpan
pi auth check --provider vikey

# Ganti / hapus kredensial
/login vikey   # jalankan lagi untuk mengganti
/logout vikey  # hapus kredensial

Alternatif (headless / CI)

Environment variable tetap didukung sebagai fallback, dipakai hanya jika belum ada kredensial tersimpan dari /login:

# Linux / macOS
export VIKEY_API_KEY="sk-vikey-..."

# Windows (PowerShell)
$env:VIKEY_API_KEY="sk-vikey-..."

Urutan prioritas: kredensial /login vikey โ†’ VIKEY_API_KEY โ†’ OPENAI_API_KEY.


Verifikasi

# Cek koneksi ke Vikey.ai
node scripts/test-connection.js

# Atau lewat Pi
pi --model vikey/gpt-4o -p "Halo, siapa kamu?"

# Cek daftar model dari Pi
pi -e ./dist/index.js --list-models | grep vikey

Jika berhasil, Anda akan melihat daftar model yang tersedia dari Vikey.ai.


Penggunaan

Memilih Model

# Lewat CLI argument
pi --model vikey/claude-3-7-sonnet

# Lewat TUI โ€” tekan Ctrl+P atau ketik /model, lalu pilih Vikey.ai

Mode Reasoning

Model dengan dukungan reasoning (Claude 3.7 Sonnet, DeepSeek R1, o3-mini, o1):

# Default (low reasoning)
pi --model vikey/claude-3-7-sonnet

# Medium reasoning
pi --model vikey/deepseek-reasoner

Perintah Interaktif

Di dalam TUI Pi (pi tanpa argumen), ketik:

Perintah Deskripsi
/vikey Info status ekstensi & API key
/vikey-models Daftar model live dari API Vikey.ai
/vikey-test Tes koneksi & latensi ke Vikey.ai
/vikey-usage Pemakaian API key: request, token & total biaya
/vikey-setup Setup otomatis models.json

Pemakaian vs Saldo

/vikey-usage          # atau: npm run usage

Menampilkan (dari API, memakai API key):

# Pemakaian Vikey.ai (API key)

**Key aktif ini:**
โ€ข Total request: 0 (sukses 0, gagal 0)
โ€ข Token: 0 (input 0 / output 0)
โ€ข Total biaya: 0

**API key akun ini (3):**
| Nama | Key | Pemakaian | Limit | Status |
| localku | `vk-f...a07b` | 363 | โˆž | aktif |
| sunahmuslim | `vk-e...fec6` | 2.686 | โˆž | aktif |
| restu-pc โ† aktif | `vk-2...4a7e` | 0 | โˆž | aktif |

โš ๏ธ Saldo akun tidak bisa dibaca dengan API key. Endpoint saldo Vikey (https://app.vikey.ai/api/user/billing) hanya menerima access token dashboard (hasil login web), bukan API key. Untuk melihat saldo, buka dashboard Vikey.

Contoh Output /vikey

โœจ Vikey.ai Provider Extension for Pi Coding Agent

โ€ข Base URL: https://api.vikey.ai/v1
โ€ข API Key Status: โœ… Terdeteksi (sk-v...ABCd)
โ€ข Total Model Terdaftar: 15 model
โ€ข Path models.json: C:\Users\user\.pi\agent\models.json

Perintah yang tersedia:
โ€ข /vikey-models โ€” Daftar model live dari API Vikey.ai
โ€ข /vikey-test   โ€” Menguji koneksi & latensi ke server Vikey.ai
โ€ข /vikey-usage  โ€” Pemakaian, token & biaya API key
โ€ข /vikey-setup  โ€” Otomatis sinkronisasi model ke ~/.pi/agent/models.json

Contoh penggunaan model langsung:
โ€ข pi --model vikey/claude-3-7-sonnet
โ€ข pi --model vikey/deepseek-reasoner
โ€ข pi --model vikey/gpt-4o

Struktur Proyek

pi-vikey/
โ”œโ”€โ”€ package.json               # Package manifest (bin โ†’ dist/bin/cli.js)
โ”œโ”€โ”€ tsconfig.json              # TypeScript config (build)
โ”œโ”€โ”€ tsconfig.test.json         # TypeScript config (type-check tests)
โ”œโ”€โ”€ vitest.config.ts           # Vitest config (unit tests + coverage)
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts               # Composition root โ€” registrasi provider & commands
โ”‚   โ”œโ”€โ”€ catalog/               # Katalog model (single source of truth)
โ”‚   โ”‚   โ”œโ”€โ”€ types.ts           #   Tipe domain (VikeyModelDefinition, dll)
โ”‚   โ”‚   โ”œโ”€โ”€ catalog.ts         #   Data katalog + konstanta provider
โ”‚   โ”‚   โ”œโ”€โ”€ provider.ts        #   buildProviderConfig() โ†’ models.json / registerProvider
โ”‚   โ”‚   โ””โ”€โ”€ format.ts          #   Render markdown daftar model
โ”‚   โ”œโ”€โ”€ config/                # Konfigurasi
โ”‚   โ”‚   โ”œโ”€โ”€ apiKey.ts          #   API key: /login vikey (auth.json) + env fallback
โ”‚   โ”‚   โ”œโ”€โ”€ paths.ts           #   Path models.json (global / project)
โ”‚   โ”‚   โ””โ”€โ”€ modelsJson.ts      #   Read/write/merge models.json
โ”‚   โ”œโ”€โ”€ api/                   # HTTP client
โ”‚   โ”‚   โ”œโ”€โ”€ client.ts          #   testVikeyConnection (fetch injectable)
โ”‚   โ”‚   โ”œโ”€โ”€ models-fetch.ts    #   fetchRemoteModelIds โ€” GET /v1/models live
โ”‚   โ”‚   โ””โ”€โ”€ refresh.ts         #   refreshModels handler (live + persist + fallback)
โ”‚   โ”œโ”€โ”€ commands/              # Handler perintah murni + wiring pi
โ”‚   โ”‚   โ”œโ”€โ”€ status.ts          #   /vikey
โ”‚   โ”‚   โ”œโ”€โ”€ list.ts            #   /vikey-models
โ”‚   โ”‚   โ”œโ”€โ”€ test.ts            #   /vikey-test
โ”‚   โ”‚   โ”œโ”€โ”€ usage.ts           #   /vikey-usage
โ”‚   โ”‚   โ”œโ”€โ”€ setup.ts           #   /vikey-setup
โ”‚   โ”‚   โ””โ”€โ”€ register.ts        #   Registrasi ke pi.registerCommand
โ”‚   โ”œโ”€โ”€ cli/                   # CLI mandiri (TS, dikompilasi ke dist)
โ”‚   โ”‚   โ”œโ”€โ”€ args.ts            #   Parse argumen (murni)
โ”‚   โ”‚   โ”œโ”€โ”€ setup.ts           #   npm run setup
โ”‚   โ”‚   โ”œโ”€โ”€ test-connection.ts #   npm run test:conn
โ”‚   โ”‚   โ””โ”€โ”€ usage.ts           #   npm run usage
โ”‚   โ””โ”€โ”€ bin/                   # Executable `pi-vikey`
โ”‚       โ””โ”€โ”€ cli.ts             #   Dispatch setup|test
โ”œโ”€โ”€ tests/
โ”‚   โ””โ”€โ”€ unit/                  # Unit test (terpisah dari src, mirror struktur)
โ”‚       โ”œโ”€โ”€ api/               #   client.test.ts
โ”‚       โ”œโ”€โ”€ catalog/           #   catalog / provider / format
โ”‚       โ”œโ”€โ”€ cli/               #   args
โ”‚       โ”œโ”€โ”€ commands/          #   status / test / setup
โ”‚       โ”œโ”€โ”€ config/            #   apiKey / paths / modelsJson
โ”‚       โ””โ”€โ”€ util/              #   mask
โ”œโ”€โ”€ scripts/
โ”‚   โ”œโ”€โ”€ setup.js               # Shim โ†’ dist/cli/setup.js (backward-compat)
โ”‚   โ”œโ”€โ”€ test-connection.js     # Shim โ†’ dist/cli/test-connection.js
โ”‚   โ””โ”€โ”€ generate-example.js    # Regenerasi models.example.json dari katalog
โ”œโ”€โ”€ models.example.json        # Template konfigurasi (dihasilkan otomatis)
โ”œโ”€โ”€ README.md                  # Dokumentasi (Indonesia)
โ””โ”€โ”€ README.en.md               # Dokumentasi (English)

Arsitektur & Prinsip

  • Single Responsibility โ€” setiap modul punya satu alasan untuk berubah: data katalog, mapping provider, HTTP/client, persistence, presentasi, dan wiring dipisah.
  • Daftar model live dari API โ€” daftar efektif diambil dari GET /v1/models via refreshModels; katalog statis hanya fallback + sumber enrichment metadata.
  • Single Source of Truth โ€” katalog statis hanya di src/catalog/catalog.ts; registerProvider, models.json, dan models.example.json semuanya diturunkan dari sana (lihat npm run generate:example).
  • Dependency Injection โ€” handler/CLI menerima dependensi (fetch, persist, tester) yang bisa di-stub di unit test.
  • Errors as values โ€” hasil operasi I/O dikembalikan sebagai Result terstruktur, tidak melempar exception untuk alur normal.

Cara Kerja Daftar Model (Live dari API)

  1. Buka pi (TUI) โ†’ background refresh: GET /v1/models โ†’ daftar menggantikan katalog statis โ†’ snapshot disimpan ke ~/.pi/agent/models-store.json.
  2. Sesi berikutnya / --list-models โ†’ fase offline: snapshot terakhir di-restore tanpa fetch.
  3. Model baru di gateway muncul otomatis tanpa update ekstensi (heuristik metadata: context window default 128k/16k; reasoning terdeteksi dari pola id seperti r1, o3, reasoner, thinking).
  4. Katalog statis hanya dipakai saat offline pertama kali atau API gagal.
  5. Kredensial: pi memprioritaskan credential tersimpan (/login), lalu env VIKEY_API_KEY.

Instalasi Manual (Tanpa Ekstensi)

Jika tidak ingin menggunakan ekstensi, Anda bisa langsung mengedit ~/.pi/agent/models.json secara manual dengan isi dari models.example.json.

  1. Buka ~/.pi/agent/models.json (buat jika belum ada)
  2. Tambahkan konfigurasi provider vikey (lihat models.example.json)
  3. Set VIKEY_API_KEY environment variable
  4. Restart Pi

Pengembangan

# Clone
git clone https://github.com/aarestu/pi-vikey.git
cd pi-vikey

# Install
npm install

# Build TypeScript
npm run build

# Watch mode
npm run watch

# Type-check (src + tests)
npm run typecheck

# Jalankan unit test
npm test

# Unit test + laporan coverage
npm run test:coverage

# Test dengan Pi langsung
pi -e ./dist/index.js

# Test connection
npm run test:conn

# Regenerasi models.example.json dari katalog
npm run generate:example

Menambahkan Model Baru

Edit src/catalog/catalog.ts dan tambahkan entri baru ke array VIKEY_MODEL_CATALOG:

{
  id: "model-id-baru",
  name: "Nama Model Baru",
  category: "openai",
  contextWindow: 128000,
  maxTokens: 16384,
  input: ["text"],
  reasoning: false,
  recommended: false,
  description: "Deskripsi model."
}

Kemudian:

npm run build
npm run generate:example   # sinkronkan models.example.json
npm test                   # pastikan tes katalog tetap hijau

FAQ

Q: Apa itu Vikey.ai?

Vikey.ai adalah AI inference gateway yang menyediakan akses ke berbagai model LLM (Claude, GPT, DeepSeek, Gemini, Qwen) dengan endpoint OpenAI-compatible dan pembayaran lokal Indonesia (QRIS/IDR).

Q: Berapa biaya penggunaan?

Lihat harga terbaru di https://vikey.ai/pricing.

Q: Bagaimana cara mendapatkan API Key?

Daftar di vikey.ai โ†’ Dashboard โ†’ API Keys โ†’ Buat API Key baru.

Q: Bisa pakai OPENAI_API_KEY?

Ya. Jika VIKEY_API_KEY tidak diset, ekstensi akan mencari OPENAI_API_KEY sebagai fallback.

Q: Model tidak muncul di menu /model?

Pastikan VIKEY_API_KEY sudah diset dengan benar dan jalankan /reload di Pi.


Lisensi

MIT โ€” lihat file LICENSE untuk detail.


Kontribusi

Kami menyambut kontribusi! Silakan buka issue atau kirim Pull Request.


Dibuat oleh aarestu