SDK
Встройте ForestVPN из исходников.
SDK с исходным кодом для Apple и Android, стабильный C ABI для всего остального и сгенерированные клиенты API для TypeScript, Rust и Swift. Подключите пакет, соберите его из исходников и встройте mesh и туннель прямо в своё приложение.
// Apple — source Swift package (UniFFI). Add the package, import the kit.
// Package.swift → dependencies:
// .package(url: "https://github.com/forestvpn/forestvpn-apple", from: "1.0.0")
import ForestVPNKit
// ForestVPNKit + ForestVPNFFI compile into your app target.
// Nothing prebuilt to vendor — iOS 18 / macOS 14 / tvOS 17.// Android — JNI bindings, built from source alongside your Gradle build.
// The forestvpn-android-jni crate compiles as part of your build; nothing prebuilt to drop in.
val engine = ForestVpnEngine(context) // client-core under the hood/* C ABI — the shipped header forestvpn_client.h. */
#include "forestvpn_client.h"
FvpnClient* client = NULL;
if (fvpn_client_open(app_data_dir, &client) == FVPN_OK) {
char* status_json = NULL;
fvpn_client_status_json(client, &status_json);
/* … use the JSON … */
fvpn_string_free(status_json);
fvpn_client_close(client);
}// Generated client for the /platform/v1 plane.
import { Configuration, ProjectsApi } from "@forestvpn/console-api";
const config = new Configuration({
basePath: "https://api.fvpn.net",
accessToken: process.env.FORESTVPN_API_KEY, // fvpn_…
});
const { data } = await new ProjectsApi(config).listMyProjects();// Generated client for the /platform/v1 plane.
use forestvpn_console_api_client as platform;
// Point the configuration at https://api.fvpn.net and authenticate
// with your fvpn_… key, then call the projects API.Apple поставляется как Swift-пакет с исходным кодом, собранный через UniFFI; Android — как JNI, собираемый из исходников. Никаких бинарных фреймворков подключать не нужно — движок собирается вместе с вашим приложением.
Семейство SDK
Один движок, обёрнутый под каждую платформу.
Apple — ForestVPNKit
исходный SwiftPMSwift-пакет, собранный через UniFFI. Добавьте URL пакета, импортируйте ForestVPNKit — и движок mesh и туннеля компилируется прямо в таргет вашего приложения. Никакого бинарного фреймворка подключать не нужно.
- Семейство продуктов ForestVPNKit + ForestVPNFFI
- Swift-биндинги, сгенерированные через UniFFI (UniFFI 0.31)
- iOS 18 · macOS 14 · tvOS 17
- Клиенты API Consumer, Console и Admin в комплекте
| Платформа | Минимальная ОС | Продукт |
|---|---|---|
| iOS | iOS 18 | ForestVPNKit |
| macOS | macOS 14 | ForestVPNKit |
| tvOS | tvOS 17 | ForestVPNKit |
Android — биндинги JNI
JNI · из исходниковБиндинги JNI, собираемые из исходников вместе с вашей сборкой Gradle. Под капотом работает платформенно-независимый движок client-core — готового пакета подключать не нужно.
- Крейт биндингов forestvpn-android-jni
- Собирается из исходников в вашей сборке
- Движок client-core под капотом
- Поверхность для Kotlin
C ABI + Dart — forestvpn_client.h
C ABI · поставляемый заголовокСтабильный C ABI с поставляемым заголовком forestvpn_client.h. Подключайте его из Dart, Go или любого языка, понимающего C: откройте клиент, читайте статус в JSON, управляйте туннелем, подписывайтесь на события.
- forestvpn-client-ffi — сам C ABI
- Поставляемый заголовок: forestvpn_client.h
- fvpn_client_open · fvpn_client_status_json · fvpn_client_close
- Биндинги Dart FFI через fvpn_init_dart_api
Сгенерированные клиенты API
сгенерированы из OpenAPIПо одному типизированному клиенту на каждую роль-плоскость, генерируются заново из зафиксированных спецификаций OpenAPI. Укажите ему источник API и авторизуйтесь ключом, привязанным к проекту.
- TypeScript — @forestvpn/consumer, console и admin-api
- Rust — крейты api-client для consumer, console и admin
- Swift — клиенты ForestVPN Consumer, Console и Admin API
- Регенерируются командой task gen:api-clients
client-core — движок
платформенно-независимыйПлатформенно-независимый Rust-движок, который оборачивает каждый SDK — слой сокетов, сетевой стек в пространстве пользователя, MagicDNS и лестница транспортов, подстраивающаяся под сеть, в которой она работает.
- forestvpn-client-core
- Слой сокетов magicsock + netstack в пространстве пользователя
- Резолвер MagicDNS
- Адаптивные транспорты (прямой UDP, DERP, QUIC-DERP)
Выберите язык и начинайте строить.
Каждый SDK оборачивает один и тот же движок и обращается к одному и тому же Infrastructure API. Читайте документацию, подключайте пакет и делайте первый вызов.