GL AIP — GDP Labs AI Agents Package
GL stands for GDP Labs—GL AIP is our AI Agents Package for building, running, and operating agents.
Python SDK and CLI for GL AIP - Connect, configure, and manage AI agents on the GDP Labs AI Agents Package.
Python 3.13 support starts with
aip-agents0.8.59. Due to an issue with Python >=3.13.12, support for that Python version range starts withglaip-sdk0.8.64. Python 3.12 remains preferable to Python 3.13 where available.
🚀 Quick Start
Installation
Installing glaip-sdk provides both the Python SDK and the aip CLI command in a single package.
# Using pip (recommended)
pip install --upgrade glaip-sdk
# Using uv (fast alternative)
uv tool install glaip-sdk
# Using pipx (CLI-focused, isolated environment)
pipx install glaip-sdk
Requirements: Python 3.11, 3.12, or 3.13
🧪 Development Hooks
From python/glaip-sdk, install the package-level hooks so local commits use the configured checks:
cd python/glaip-sdk
pre-commit install
Optional runtime extras
# Document loader support (PDF on Python 3.11/3.12; DOCX/XLSX on Python 3.11/3.12/3.13)
pip install "glaip-sdk[document-loader]"
# Memory support
pip install "glaip-sdk[memory]"
# Google ADK support
pip install "glaip-sdk[google-adk]"
# Evaluation/testing support (includes upstream gllm-evals)
pip install "glaip-sdk[evals]"
Deprecation notice:
glaip-sdk[local]is retained for backward compatibility and will be deprecated in a future release. Prefer focused extras such asglaip-sdk[browser-use]andglaip-sdk[document-loader]for new installations.
google-adk remains optional and is not installed by default.
If you installed glaip-sdk with a tool-managed environment, install ADK support into that same environment:
# uv tool-managed install
uv tool install --upgrade "glaip-sdk[google-adk]"
# pipx-managed install
pipx install "glaip-sdk[google-adk]"
# if already installed via pipx
pipx inject glaip-sdk "aip-agents-binary[google-adk]"
Updating: The aip CLI automatically detects your installation method and uses the correct update command:
- If installed via
pip: Usespip install --upgrade glaip-sdk - If installed via
uv tool install: Usesuv tool install --upgrade glaip-sdk - You can also update manually using the same command you used to install
🐍 Hello World - Python SDK
Perfect for building applications and integrations.
Step 1: Environment Setup
Create a .env file:
# .env
AIP_API_URL=https://your-gl-aip-instance.com
AIP_API_KEY=your-api-key
# Optional rollout control while A0 facade migration remains additive-first
# auto (default): prefer aip_agents.integration, then fall back to legacy modules
# legacy: force legacy aip_agents imports for older local runtimes
# integration: force facade-only imports for rollout smoke checks
GLAIP_SDK_AIP_IMPORT_MODE=auto
Optional: mTLS for HTTPS endpoints
Use these environment variables when your AIP endpoint requires mutual TLS:
AIP_MTLS_ENABLED: enable mTLS policy loading (true/false)AIP_MTLS_DEFAULT_PROFILE: optional fallback profile name when URL does not match directlyAIP_MTLS_PROFILES_JSON: JSON array of mTLS service profiles
Example:
AIP_MTLS_ENABLED=true
AIP_MTLS_DEFAULT_PROFILE=prod
AIP_MTLS_PROFILES_JSON='[
{
"name": "prod",
"base_url": "https://api.example.com",
"enabled": true,
"verify_server_cert": true,
"certificate_set": {
"client_cert_path": "/etc/ssl/client.crt",
"client_key_path": "/etc/ssl/client.key",
"client_key_password": null,
"ca_bundle_path": "/etc/ssl/ca-bundle.crt"
}
}
]'
Notes:
- Profile
base_urlvalues must be HTTPS and include scheme + host. - Matching uses parsed scheme/host/port/path boundaries, not raw string prefixes.
- If no direct match is found,
AIP_MTLS_DEFAULT_PROFILEis used when provided. - Invalid mTLS config fails fast with
MTLSConfigError; whenAIP_MTLS_ENABLED=false, the SDK falls back to normal non-mTLS transport.
Step 2: Basic Python Script
# hello_world.py
from glaip_sdk import Client
import os
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Initialize client
client = Client()
# Create a simple agent
agent = client.agents.create(
name="hello-sdk",
instruction="You are a helpful assistant who responds clearly and concisely."
)
# Run the agent
result = agent.run("Hello world, what's 2+2?")
print(f"Agent response: {result}")
Step 3: Run Your Script
python hello_world.py
Step 4: Advanced Example with Streaming
# streaming_example.py
from glaip_sdk import Client
import os
from dotenv import load_dotenv
load_dotenv()
client = Client()
# Create agent with streaming
agent = client.agents.create(
name="streaming-agent",
instruction="You are a helpful assistant. Provide detailed responses."
)
# Stream the response
print("Streaming response:")
client.agents.run_agent(
agent.id,
"Explain quantum computing in simple terms",
verbose=True,
)
print("--- Stream complete ---")
Model Selection For Remote Agents
For deployed remote agents, the SDK now treats model= as a seeded AIP model selector.
from glaip_sdk.agents import Agent
from glaip_sdk.models import OpenAI
seeded_agent = Agent(
name="seeded-demo",
instruction="You are helpful.",
model=OpenAI.GPT_5_NANO,
)
Current remote semantics:
model=resolves seeded AIP language models only- if no seeded match exists, deployment fails fast
- there is no silent fallback to tenant-owned models
If you need an exact tenant-owned language model today, use the language-model UUID in model=:
tenant_agent = Agent(
name="tenant-demo",
instruction="You are helpful.",
model="<language-model-uuid>",
)
Current selector forms:
model="openai/gpt-5-nano"ormodel=OpenAI.GPT_5_NANO-> seeded symbolic bindingmodel="<language-model-uuid>"-> exact remote language-model binding
A more human-readable tenant selector may be added later, but it is not part of the current SDK contract.
🎉 SDK Success! You're now ready to build AI-powered applications with Python.
💻 Hello World - CLI
Perfect for quick testing and command-line workflows.
Step 1: Configure Connection
# Interactive setup (recommended)
aip configure
Or set environment variables:
export AIP_API_URL="https://your-gl-aip-instance.com"
export AIP_API_KEY="your-api-key"
export GLAIP_SDK_AIP_IMPORT_MODE="auto"
GLAIP_SDK_AIP_IMPORT_MODE is only needed for local-mode compatibility rollouts:
auto: default; preferaip_agents.integration.*, then fall back to legacy moduleslegacy: force legacy imports when an environment is pinned to olderaip-agents-binarybuildsintegration: force facade-only imports for smoke checks and future enforcement
Step 2: Verify Connection
aip status
Step 3: Create & Run Your First Agent
# Create a simple agent
aip agents create --name "hello-cli" --instruction "You are a helpful assistant"
# List agents to get the ID
aip agents list
# Run the agent with input
aip agents run <AGENT_ID> --input "Hello world, what's the weather like?"
🎉 CLI Success! You're now ready to use the CLI for AI agent workflows.
✨ Key Features
- 🤖 Agent Management: Create, run, and orchestrate AI agents with custom instructions and streaming
- 🧠 Language Models: Choose from multiple AI models per agent with manual PII tag mapping
- 🛠️ Tool Integration: Extend agents with custom Python tools and script management
- 🔌 MCP Support: Connect external services through Model Context Protocols with tool discovery
- 🔄 Multi-Agent Patterns: Hierarchical, parallel, sequential, router, and aggregator patterns
- 🎙️ Audio Interface (beta): Local-only LiveKit voice sessions for talking to agents (install with
glaip-sdk[audio]) - 💻 Modern CLI: Rich terminal interface with fuzzy search and multiple output formats
🎙️ Local Voice (LiveKit, Beta)
You can run a local voice loop that joins a LiveKit room, transcribes your speech, routes text into an agent, and speaks the reply back.
Prerequisites
- LiveKit server running (monorepo dev:
make -C python/aip-agents livekit-up) - LiveKit Meet open in browser (monorepo dev:
make -C python/aip-agents livekit-meet-open) OPENAI_API_KEYset (used bylivekit-plugins-openaifor STT/TTS)
Monorepo Demo Sequence
# One-time install
make -C python/aip-agents install-audio
# Terminal 1: LiveKit server
make -C python/aip-agents livekit-up
# Terminal 2: Join with browser (enable mic)
make -C python/aip-agents livekit-meet-open
# Terminal 3: Run agent (recommended: debug logs)
AIP_AUDIO_DEBUG=1 make -C python/aip-agents audio-agent-up
# Optional: validate join/disconnect (no browser, no mic)
make -C python/aip-agents livekit-smoke-join
Tip: If STT shows odd fragments, it's often speaker-to-mic echo; use headphones.
Example .env values for the repo defaults:
LIVEKIT_URL=ws://localhost:7880
LIVEKIT_API_KEY=devkey
LIVEKIT_API_SECRET=devsecretdevsecretdevsecretdevsecret
LIVEKIT_ROOM_NAME=aip-audio-demo
OPENAI_API_KEY=...
Install
pip install "glaip-sdk[audio]"
Run the SDK example
From the repo:
cd python/glaip-sdk
poetry install --extras "audio"
poetry run python examples/sdk/05_audio_session.py
More details:
python/glaip-sdk/gitbook/guides/audio-interface.mdpython/glaip-sdk/examples/sdk/livekit-local-dev.md
🌳 Live Steps Panel
The CLI steps panel now streams a fully hierarchical tree so you can audit complex agent runs without leaving the terminal.
- Renders parent/child relationships with
│├└connectors, even when events arrive out of order - Marks running steps with spinners and duration badges sourced from SSE metadata before local fallbacks
- Highlights failures inline (
✗ reason) and raises warning glyphs on affected delegate branches - Derives deterministic “💭 Thinking…” spans before/after each delegate or tool action to show scheduling gaps
- Flags parallel work with a dedicated glyph and argument-derived labels so simultaneous tool calls stay readable
- Try it locally:
poetry run python scripts/replay_steps_log.py --transcript tests/fixtures/rendering/transcripts/parallel_research.jsonl --output /tmp/parallel.log
📚 Documentation
📖 Complete Documentation - Visit our GitBook for comprehensive guides, tutorials, and API reference.
Quick links:
- Quick Start Guide: Get your first agent running in 5 minutes
- Agent Management: Complete agent lifecycle management
- Custom Tools: Build and integrate custom tools
- MCP Integration: Connect external services
- API Reference: Complete SDK reference
🧪 Simulate the Update Notifier
Need to verify the in-session upgrade flow without hitting PyPI or actually running pip install? Use the bundled helper:
cd python/glaip-sdk
poetry run python scripts/mock_update_notifier.py
# or customize the mock payload:
# poetry run python scripts/mock_update_notifier.py --version 3.3.3 --marker "[nightly build]"
The script:
- Launches a SlashSession with prompt-toolkit disabled (so it runs cleanly in tests/CI).
- Forces the notifier to believe a newer version exists (
--version 9.9.9by default). - Appends a visible marker (default
[mock update]) to the banner so you can prove the branding reload happened; pass--marker ""to skip. - Auto-selects “Update now”, mocks the install step, and runs the real branding refresh logic.
- Resets module metadata afterwards so your environment remains untouched.
You should see the Rich banner re-render with the mocked version (and optional marker) at the end of the run.
Metadata
Release files for glaip-sdk 0.8.65
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| glaip_sdk-0.8.65.tar.gz | 708.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| glaip_sdk-0.8.65-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.5 MB
Release files / glaip_sdk-0.8.65.tar.gz
| Download URL | glaip_sdk-0.8.65.tar.gz |
|---|---|
| Size | 708.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
58f63102124e0a1888940baf04ae34f4288f48fd1f12ac65cf3a4b80703081f8
|
|
BLAKE2b-256 checksum How to use checksums |
564ee8972d1ad1676e7893a3fe0977980d8e4762d5ab223045d110a0df5bbb66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
poetry/2.1.4 CPython/3.12.0 Linux/5.10.0-32-cloud-amd64
|
Release files / glaip_sdk-0.8.65-py3-none-any.whl
| Download URL | glaip_sdk-0.8.65-py3-none-any.whl |
|---|---|
| Size | 840.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2bb012138c6b9e973aa2ad29141fc681c2f84f5baabbff144956bbe816461a27
|
|
BLAKE2b-256 checksum How to use checksums |
d07e0eca3911fedb65933933c39d15b6bb24e222794505ee0f42b62457ce6084
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
poetry/2.1.4 CPython/3.12.0 Linux/5.10.0-32-cloud-amd64
|