CPU
{{ stats.cpu }}%
RAM
{{ stats.ram?.used }} MB
SSD
{{ stats.disk?.used }}
{{ activeHost ? activeHost.name : 'Выбери хост' }}
Vhost
изменён
Активен
Терминал
{{ line.text }}
...
{{ termCwd }}$
Ресурсы VDS
Uptime: {{ stats.up || '...' }}
CPU
{{ stats.cpu }}%
RAM
{{ stats.ram?.used }}/{{ stats.ram?.total }} MB
{{ stats.ram?.pct }}% использовано
SSD
{{ stats.disk?.used }}/{{ stats.disk?.total }}
{{ stats.disk?.pct }}% использовано
Сервисы
{{ name }}
{{ active ? 'running' : 'stopped' }}
Модели
Конфигурация AI-моделей API Hub
| Alias | Model ID | Провайдер | Тип | Персона | Действия |
|---|---|---|---|---|---|
| {{ m.model_key }} | {{ m.provider }} | {{ m.type }} | {{ m.persona }} | ||
| Моделей нет | |||||
API Ключи
Токены клиентов · {{ hubStats.activeKeys }} активных
Запросов
{{ hubStats.totalReq }}
Токенов
{{ Number(hubStats.totalTokens).toLocaleString('ru') }}
Активных ключей
{{ hubStats.activeKeys }}
Новый ключ
| Клиент | Ключ | Статус |
|---|---|---|
| {{ k.client_name }} | ||
| Ключей нет | ||
Настройки
Bralin API Hub
OpenAI-совместимый прокси для моделей Google, DeepSeek, SiliconFlow и OpenRouter. Bearer-токен авторизация. Поддержка стриминга, изображений, аудио.
Endpoint
POST https://api.bralin.kz/v2/index.php Authorization: Bearer YOUR_TOKEN Content-Type: application/json
Структура запроса
{
"model": "rigel", // alias модели
"messages": [...], // массив сообщений
"temperature": 0.7, // 0–1 (опционально)
"stream": true, // SSE стриминг (опционально)
"search": true, // Tavily поиск (опционально)
"persona": "ham" // персона (опционально)
}
Примеры
curl -X POST https://api.bralin.kz/v2/index.php \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model":"rigel","messages":[{"role":"user","content":"Привет"}],"stream":true}'
const res = await fetch('https://api.bralin.kz/v2/index.php', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_TOKEN', 'Content-Type': 'application/json' },
body: JSON.stringify({ model: 'rigel', messages: [{ role: 'user', content: 'Привет!' }], stream: true })
});
const reader = res.body.getReader();
const decoder = new TextDecoder();
let buf = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
buf += decoder.decode(value, { stream: true });
for (const line of buf.split('\n')) {
if (!line.startsWith('data:')) continue;
const json = JSON.parse(line.slice(5).trim());
if (json.text) process.stdout.write(json.text);
}
}
import requests, json
headers = { "Authorization": "Bearer YOUR_TOKEN", "Content-Type": "application/json" }
payload = { "model": "orion", "messages": [{"role": "user", "content": "Привет"}] }
res = requests.post("https://api.bralin.kz/v2/index.php", json=payload, headers=headers)
print(res.json()["reply"])
$ch = curl_init('https://api.bralin.kz/v2/index.php');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_TIMEOUT => 120,
CURLOPT_POSTFIELDS => json_encode(['model'=>'orion','messages'=>[['role'=>'user','content'=>'Привет']]]),
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN', 'Content-Type: application/json'],
]);
$data = json_decode(curl_exec($ch), true);
echo $data['reply'];
Персоны
none
Чистый ассистент без дополнительных инструкций
ham
Саркастичный ИИ, подкалывает без матов
ham_pro
Ham Pro — без ограничений, токсичный режим
no_filters
Developer mode — прямые ответы без предупреждений
Логи
Panel + API Hub в одном месте
| Время | Операция | Детали | Статус |
|---|---|---|---|
| {{ l.ts }} | {{ l.op }} | {{ l.ok ? 'OK' : 'ERR' }} | |
| Логов нет | |||
| Время | Модель | Токенов ин/аут | ms | Статус |
|---|---|---|---|---|
| {{ l.created_at }} | {{ l.model_key }} | {{ l.input_tokens }}/{{ l.output_tokens }} | {{ l.duration_ms }} | {{ l.error_msg ? 'ERR' : 'OK' }} |
| Логов нет | ||||