Ollama adapter for PULSE Protocol — run local AI models with the same interface as cloud providers
Project description
pulse-ollama
Ollama adapter for PULSE Protocol — run local AI models with the same interface as cloud providers.
Your data never leaves your machine. GDPR-compliant by design.
# Switch from cloud to local — one line changes:
# from pulse_openai import OpenAIAdapter as AI; adapter = AI(api_key="sk-...")
from pulse_ollama import OllamaAdapter as AI; adapter = AI(model="llama3.2")
# Everything below stays EXACTLY the same
msg = PulseMessage(action="ACT.ANALYZE.SENTIMENT", parameters={"text": "I love open source!"})
response = adapter.send(msg)
print(response.content["parameters"]["result"])
Why pulse-ollama?
| Feature | Cloud (OpenAI/Anthropic) | Local (Ollama) |
|---|---|---|
| Data leaves your machine | Yes | No |
| GDPR compliance | Depends on DPA | By design |
| Works offline | No | Yes |
| API key required | Yes | No |
| Cost per token | Yes | Free |
Installation
pip install pulse-ollama
Requirements: Ollama must be installed and running.
# Install Ollama (macOS/Linux)
curl -fsSL https://ollama.ai/install.sh | sh
# Pull a model
ollama pull llama3.2 # 2GB, fast
ollama pull mistral # 4GB, high quality
ollama pull phi3 # 2GB, efficient
ollama pull gemma2 # 5GB, Google's model
Quick Start
from pulse import PulseMessage
from pulse_ollama import OllamaAdapter
adapter = OllamaAdapter(model="llama3.2")
# See what models you have installed
print(adapter.list_models())
# ['llama3.2:latest', 'mistral:latest', 'phi3:latest']
# Ask a question
msg = PulseMessage(
action="ACT.QUERY.DATA",
parameters={"query": "Explain PULSE Protocol in one sentence"}
)
response = adapter.send(msg)
print(response.content["parameters"]["result"])
# Sentiment analysis
msg = PulseMessage(
action="ACT.ANALYZE.SENTIMENT",
parameters={"text": "I love this open source project!"}
)
response = adapter.send(msg)
print(response.content["parameters"]["result"])
# {"sentiment": "positive", "confidence": 0.95, "explanation": "..."}
# Translate
msg = PulseMessage(
action="ACT.TRANSFORM.TRANSLATE",
parameters={"text": "Hello, world!", "target_language": "German"}
)
response = adapter.send(msg)
print(response.content["parameters"]["result"])
# Hallo, Welt!
Supported Actions
| PULSE Action | Description |
|---|---|
ACT.QUERY.DATA |
Ask questions, get answers |
ACT.CREATE.TEXT |
Generate text from instructions |
ACT.ANALYZE.SENTIMENT |
Analyze emotional tone |
ACT.ANALYZE.PATTERN |
Find patterns in data |
ACT.TRANSFORM.TRANSLATE |
Translate between languages |
ACT.TRANSFORM.SUMMARIZE |
Summarize long text |
Configuration
adapter = OllamaAdapter(
model="llama3.2", # Default model
host="http://localhost:11434", # Ollama server URL
timeout=120, # Inference timeout (seconds)
)
# Override model per-request
msg = PulseMessage(
action="ACT.CREATE.TEXT",
parameters={
"instructions": "Write a poem about AI",
"model": "mistral", # Override default
"temperature": 0.9, # Creativity
}
)
# Remote Ollama server (shared team deployment)
adapter = OllamaAdapter(host="http://ai-server.company.com:11434")
Provider Switching
The whole point of PULSE adapters is that switching providers is one line:
# Local model (privacy, offline, free)
from pulse_ollama import OllamaAdapter as AI
adapter = AI(model="llama3.2")
# Cloud (scale, latest models)
# from pulse_openai import OpenAIAdapter as AI
# adapter = AI(api_key="sk-...")
# Everything else stays identical
response = adapter.send(msg)
Part of the PULSE Ecosystem
pulse-protocol # Core (install this first)
pulse-openai # OpenAI GPT
pulse-anthropic # Anthropic Claude
pulse-ollama # Local models (this package)
pulse-gemini # Google Gemini
pulse-binance # Binance exchange
pulse-bybit # Bybit exchange
pulse-kraken # Kraken exchange
License
Apache 2.0 — free forever.
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 pulse_ollama-0.1.0.tar.gz.
File metadata
- Download URL: pulse_ollama-0.1.0.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad89fab1be32d7709a448d2502f000353029b518b16bdc82a61373bf12512dff
|
|
| MD5 |
af74d0b554a33d897dad9ef7eda1fd91
|
|
| BLAKE2b-256 |
f2943333347d701dc8f45410e95d558a9589d40f62a0689761217469249edcce
|
File details
Details for the file pulse_ollama-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pulse_ollama-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
873c98d17eed2e0f58ddbfcfe0fe0f0e1ece52e89f33097b1bb1e6bb9acf6b2b
|
|
| MD5 |
32482d0587d4739565c1eb82049ca40a
|
|
| BLAKE2b-256 |
f3656edc10bb59c6c680db8ee3d1f7d48a40cefe97a90b5831e852d72912af2e
|