Afferens Python SDK — Data Pipeline for AI Agents
Project description
Afferens — Python SDK
The data pipeline that gives AI agents real-world senses.
Afferens gives AI agents verified context about the physical world before they act. Through a single hardware-agnostic API, agents pull real-time perception — priced by usage with sense tokens. Vision is live today; additional modalities (spatial, acoustic, environmental, and more) are rolling out.
- Docs: https://afferens.com/docs
- Homepage: https://afferens.com
Install
pip install afferens
Quickstart
from afferens import Afferens
client = Afferens(api_key="aff_live_...") # your key from afferens.com
# Pull the latest VISION perception (production-ready today)
data = client.perceive(modality="VISION")
print(data)
Get your API key by signing up at afferens.com. Auth is a simple X-API-KEY header, handled for you by the client.
Perceive
client.perceive(modality="VISION", limit=1) # one event
client.vision(limit=5) # modality shortcut
# Modalities: VISION, SPATIAL, ACOUSTIC, ENVIRONMENTAL, MOLECULAR, INTEROCEPTION
# (VISION is live now; the rest are rolling out.)
# Omit `modality` to retrieve across all modalities. `limit` caps at 10.
Returns a dict with status, data, count, api_version.
Ingest live sensor data
client.ingest(
modality="ENVIRONMENTAL",
data={"temperature_c": 24.1, "humidity_pct": 55},
classification="room_reading",
)
# Batch many readings in one request (fewer round-trips):
client.ingest_batch([
{"modality": "SPATIAL", "data": {"x": 1, "y": 2, "z": 0}, "node_id": "ROVER-01"},
{"modality": "VISION", "data": {"frame": "..."}, "node_id": "ROVER-01"},
])
Actuate a physical node
client.actuate(
command_type="ROTATE_CAMERA",
parameters={"degrees": 90},
# target_node_id optional — defaults to your most recently active node
)
# command_type: CAPTURE_FRAME, TRIGGER_ALARM, MOVE_TO, ROTATE_CAMERA,
# LOCK, UNLOCK, ADJUST_SENSOR, SHUTDOWN_NODE
Sense tokens
Usage is metered in sense tokens (a VISION call ≈ 14 tokens). Every account starts with a free allocation; token packs unlock more. Tokens never expire. See afferens.com/pricing.
Errors
Non-200 responses raise AfferensError (with .status and .message).
from afferens import Afferens
from afferens.client import AfferensError
try:
client.perceive(modality="VISION")
except AfferensError as e:
print(e.status, e.message)
License
© Afferens. All rights reserved.
Project details
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 afferens-0.1.3.tar.gz.
File metadata
- Download URL: afferens-0.1.3.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
919cfc5013927f9e10f714a9e24652cc792d93ad069a9135be6f888b79072ab6
|
|
| MD5 |
1d61992b5577bda31e6ef791e91c903c
|
|
| BLAKE2b-256 |
cf333da78d841c408c604393d253f67cd11d57cd1acda09da1c898c7c55fa24e
|
File details
Details for the file afferens-0.1.3-py3-none-any.whl.
File metadata
- Download URL: afferens-0.1.3-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3339436143a3f1a6ad9af88ecdabc39e8afd5bc85fa4081e78249b9e48806d20
|
|
| MD5 |
0477943c6ef1dd9721122a2cd638bfe9
|
|
| BLAKE2b-256 |
7af7a714ee2f070c71bb4a4fe1ab125922ddae6849e10c0b0bc70ff97f789319
|