Tokligence Gateway - Multi-platform LLM gateway with unified OpenAI-compatible API
Project description
Tokligence - Multi-platform LLM Gateway
Tokligence Gateway - A multi-platform LLM gateway with unified OpenAI-compatible API.
This package provides a convenient Python interface to the Tokligence Gateway, bundling pre-compiled Go binaries for easy installation via pip or uv.
Features
- 🚀 Zero Dependencies on Go - Pre-compiled binaries included
- 🌍 Cross-Platform - Works on Linux, macOS, and Windows
- 🔧 Simple CLI - Intuitive command-line interface
- 🐍 Pythonic API - Native Python wrappers for gateway operations
- 📦 Easy Installation - Just
pip install tokligence
Installation
Via pip
pip install tokligence
Via uv (recommended for faster installation)
uv add tokligence
From source
git clone https://github.com/tokligence/tokligence-gateway
cd tokligence-gateway/python # 或者你的实际路径
pip install -e .
Quick Start
1. Initialize Configuration
# Initialize gateway configuration
tokligence init
# Or with custom config path
tokligence --config ~/myconfig.yaml init
2. Start the Gateway Daemon
# Start in foreground
tokligence-daemon start
# Start in background
tokligence-daemon start --background
# Start on custom port (or use short alias)
tokligenced start --port 8080
3. Create Users and API Keys
# Create a user
tokligence user create alice --email alice@example.com
# List users
tokligence user list
# Create API key for user
tokligence apikey create <user-id> --name "Production Key"
4. Use the Gateway
Once running, the gateway provides an OpenAI-compatible API:
import openai
# Point to your local gateway
openai.api_base = "http://localhost:8081/v1"
openai.api_key = "your-api-key"
# Use as normal
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Hello!"}]
)
Python API
Basic Usage
from tokligence import Gateway, Daemon
# Initialize gateway
gateway = Gateway()
gateway.init()
# Create a user
user = gateway.create_user("alice", email="alice@example.com")
print(f"Created user: {user['id']}")
# List users
users = gateway.list_users()
for user in users:
print(f"User: {user['username']} ({user['email']})")
# Start daemon
daemon = Daemon(port=8081)
daemon.start(background=True)
# Check status
status = daemon.status()
print(f"Daemon status: {status['status']}")
# Stop daemon
daemon.stop()
Configuration Management
from tokligence import Config, load_config
# Load configuration
config = load_config()
# Get values
port = config.get('gateway.port', 8081)
auth_enabled = config.get('gateway.auth.enabled', False)
# Set values
config.set('gateway.port', 8080)
config.set('providers.openai.api_key', 'sk-...')
# Update multiple values
config.update({
'gateway': {
'port': 8080,
'auth': {'enabled': True}
}
})
# Save configuration
config.save()
# Convert to environment variables
env_vars = config.to_env_vars()
# Returns: {'TOKLIGENCE_GATEWAY_PORT': '8080', ...}
Advanced Example - Team Gateway Setup
from tokligence import Gateway, Daemon, Config
import time
def setup_team_gateway():
"""Set up a gateway for team use with authentication."""
# Configure gateway
config = Config()
config.update({
'gateway': {
'port': 8081,
'auth': {
'enabled': True,
'type': 'api_key'
}
},
'providers': {
'openai': {
'enabled': True,
'api_key': 'your-openai-key'
},
'anthropic': {
'enabled': True,
'api_key': 'your-anthropic-key'
}
}
})
config.save()
# Initialize gateway
gateway = Gateway()
gateway.init()
# Create team users
team_members = [
('alice', 'alice@team.com'),
('bob', 'bob@team.com'),
('charlie', 'charlie@team.com')
]
for username, email in team_members:
user = gateway.create_user(username, email)
api_key = gateway.create_api_key(
user['id'],
name=f"{username}'s API Key"
)
print(f"User: {username}")
print(f" ID: {user['id']}")
print(f" API Key: {api_key['key']}")
print()
# Start daemon
daemon = Daemon(port=8081)
print("Starting gateway daemon...")
daemon.start(background=True)
# Wait for startup
time.sleep(2)
# Check status
status = daemon.status()
if status['status'] == 'running':
print(f"✅ Gateway running on port {status['port']}")
print(f" PID: {status['pid']}")
else:
print("❌ Failed to start gateway")
return daemon
if __name__ == '__main__':
daemon = setup_team_gateway()
# Run until interrupted
try:
print("\nGateway is running. Press Ctrl+C to stop.")
while True:
time.sleep(1)
except KeyboardInterrupt:
print("\nStopping gateway...")
daemon.stop()
CLI Commands
Gateway CLI
# Initialize configuration
tokligence init
# User management
tokligence user create <username> [--email <email>]
tokligence user list [--json]
# API key management
tokligence apikey create <user-id> [--name <name>]
# Usage statistics
tokligence usage [--user <user-id>] [--json]
# Version info
tokligence version
Daemon CLI
# Start daemon (use either command)
tokligence-daemon start [--port <port>] [--background]
tokligenced start [--port <port>] [--background]
# Stop daemon
tokligence-daemon stop
# Restart daemon
tokligence-daemon restart [--port <port>]
# Check status
tokligence-daemon status
Configuration
Configuration can be managed through:
- Configuration file (
~/.config/tokligence/config.yaml) - Environment variables (prefix:
TOKLIGENCE_) - Command-line arguments
Example Configuration
gateway:
host: localhost
port: 8081
auth:
enabled: true
type: api_key
logging:
level: info
file: /var/log/tokgateway.log
database:
type: sqlite
path: ~/.config/tokligence/gateway.db
providers:
openai:
enabled: true
api_key: ${OPENAI_API_KEY}
base_url: https://api.openai.com/v1
models:
- gpt-4
- gpt-3.5-turbo
anthropic:
enabled: true
api_key: ${ANTHROPIC_API_KEY}
base_url: https://api.anthropic.com
models:
- claude-3-opus
- claude-3-sonnet
Environment Variables
All configuration options can be set via environment variables:
export TOKLIGENCE_GATEWAY_PORT=8080
export TOKLIGENCE_GATEWAY_AUTH_ENABLED=true
export TOKLIGENCE_PROVIDERS_OPENAI_API_KEY=sk-...
export TOKLIGENCE_PROVIDERS_ANTHROPIC_API_KEY=sk-ant-...
Development
Building from Source
# Clone repository
git clone https://github.com/tokligence/tokligence-gateway
cd tokligence-gateway/python # 或者你的实际路径
# Build the package (requires Go binaries)
./scripts/build.sh
# Install in development mode
pip install -e .
# Run tests
pytest
Publishing
# Build package
./scripts/build.sh
# Upload to TestPyPI
./scripts/publish.sh --test
# Upload to PyPI
./scripts/publish.sh
Platform Support
| Platform | Architecture | Status |
|---|---|---|
| Linux | amd64 | ✅ Supported |
| Linux | arm64 | ✅ Supported |
| macOS | amd64 (Intel) | ✅ Supported |
| macOS | arm64 (Apple Silicon) | ✅ Supported |
| Windows | amd64 | ✅ Supported |
Troubleshooting
Binary not found error
If you encounter "Binary not found" errors, ensure:
- The package was installed correctly
- Your platform is supported (see table above)
- Try reinstalling:
pip install --force-reinstall tokligence
Permission denied errors
On Unix-like systems, the binaries should be automatically made executable. If you encounter permission issues:
# Find the package location
python -c "import tokligence; print(tokligence.__file__)"
# Make binaries executable
chmod +x /path/to/tokligence/binaries/*
Gateway fails to start
Check if the port is already in use:
# Check port 8081
lsof -i :8081 # macOS/Linux
netstat -ano | findstr :8081 # Windows
Contributing
Contributions are welcome! Please see the main Tokligence Gateway repository for contribution guidelines.
License
Apache License 2.0 - see LICENSE file for details.
Support
- Issues: GitHub Issues
- Documentation: Tokligence Gateway Docs
- Email: cs@tokligence.ai
Related Projects
- Tokligence Gateway - The core Go implementation
- Tokligence Marketplace - Token marketplace integration
Installation
Install via pip:
pip install tokligence
Or via uv:
uv add tokligence
This package includes pre-compiled binaries for Linux, macOS, and Windows.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tokligence-0.2.0.tar.gz.
File metadata
- Download URL: tokligence-0.2.0.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93907644c31fe6afced59dd8c0c8d4c6cccd7c73ba6c9a042b05e7e13f8a3d9c
|
|
| MD5 |
0585c120bf32ba569b310a4b98a4da0e
|
|
| BLAKE2b-256 |
a94e85c81fd4be65f07eb06e9adbb754610418c090e90e73fe4bf14321767da8
|
File details
Details for the file tokligence-0.2.0-py3-none-any.whl.
File metadata
- Download URL: tokligence-0.2.0-py3-none-any.whl
- Upload date:
- Size: 17.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08aa7f247dfcd1d70ad70091a5ccd73237934d35569e0199b501b4062d35f9d2
|
|
| MD5 |
b25d2729c9ba17a99b60f3e44c4b3062
|
|
| BLAKE2b-256 |
4d72da71c8ef350b23a66e6bc7dd6f761e065a6f62aedca9fc750aee127515f9
|