EY

Official SDK for EyePop.ai to handle configuration, API authentication, and data retrieval.

Install

mkdir -p .claude/skills/eyepop-sdk && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18252" && unzip -o skill.zip -d .claude/skills/eyepop-sdk && rm skill.zip

Installs to .claude/skills/eyepop-sdk

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

EyePop Python SDK - usage patterns, testing examples, and composable pops
73 charsno explicit “when” trigger
Beginner

Key capabilities

  • Configure EyePop SDK authentication
  • Load staging and production credentials
  • Perform synchronous inference with WorkerEndpoint
  • Perform asynchronous inference with WorkerEndpoint
  • Access DataEndpoint for datasets and VLM
  • Configure inference pipelines with Pop objects

How it works

This skill manages EyePop SDK configuration and authentication using API keys from vault files. It provides entry points for worker and data endpoints to perform inference and data operations.

Inputs & outputs

You give it
Image file, video stream, or VLM prompt
You get back
Inference results, dataset listings, or VLM captions

When to use eyepop-sdk

  • Configure EyePop
  • Authentication setup
  • Data pipeline access

About this skill

EyePop Python SDK

Repo

PathBranchLanguage
~/Code/eyepop/eyepop-sdk-pythonmainPython 3.12+

Package: eyepop on PyPI.

Authentication

The SDK uses EYEPOP_API_KEY for authentication. Keys are stored in vault files:

EnvironmentVault FileAPI Base
Staging~/Code/eyepop/.vault/.env.staginghttps://api.staging.eyepop.xyz
Production~/Code/eyepop/.vault/.env.productionhttps://web-api.eyepop.ai
# Load staging credentials (must also set EYEPOP_URL for staging)
set -a && source ~/Code/eyepop/.vault/.env.staging && set +a
export EYEPOP_URL=https://compute.staging.eyepop.xyz

# Load production credentials (EYEPOP_URL defaults to production, no override needed)
set -a && source ~/Code/eyepop/.vault/.env.production && set +a

Important: The vault files use plain assignments (no export), so use set -a to auto-export all sourced variables.

The SDK reads EYEPOP_API_KEY from the environment automatically. Other env vars:

VariableRequiredDescription
EYEPOP_API_KEYYesAPI key from dashboard.eyepop.ai
EYEPOP_POP_IDNoPop Id from dashboard. Defaults to "transient"
EYEPOP_ACCOUNT_IDFor Data APIAccount UUID for EyePopSdk.dataEndpoint()
EYEPOP_URLFor stagingCompute API URL. Defaults to https://compute.eyepop.ai (production). Set to https://compute.staging.eyepop.xyz for staging.

Important: EYEPOP_SECRET_KEY is deprecated and should NOT be used in any code or documentation.

See eyepop-auth skill for full authentication details.

SDK Entry Points

WorkerEndpoint (inference)

from eyepop import EyePopSdk

# Sync
with EyePopSdk.sync_worker() as endpoint:
    result = endpoint.upload('image.jpg').predict()

# Async
async with EyePopSdk.async_worker() as endpoint:
    job = await endpoint.upload('image.jpg')
    result = await job.predict()

DataEndpoint (datasets, VLM, evaluation)

from eyepop import EyePopSdk

async with EyePopSdk.dataEndpoint(is_async=True) as endpoint:
    datasets = await endpoint.list_datasets()

Composable Pops

Use Pop objects with endpoint.set_pop(pop) to configure inference pipelines at runtime.

Key Types

from eyepop.worker.worker_types import (
    Pop,                      # Top-level pipeline definition
    InferenceComponent,       # ML model component
    TrackingComponent,        # Object tracking
    ContourFinderComponent,   # Segmentation contour extraction
    ComponentFinderComponent, # Connected components
    ForwardComponent,         # Route between stages
    CropForward,              # Crop detections -> sub-components
    FullForward,              # Full image -> sub-components
    ComponentParams,          # Runtime parameters (prompts, ROI)
)

Important: Use ability=, NOT model=

The model= and modelUuid= fields on InferenceComponent are deprecated. Always use:

  • ability='eyepop.<name>:latest' (by alias)
  • abilityUuid='<uuid>' (by UUID)

Common Pop Patterns

# Simple detection
Pop(components=[
    InferenceComponent(ability='eyepop.person:latest', categoryName="person")
])

# Chained: detect -> crop -> sub-model
Pop(components=[
    InferenceComponent(
        ability='eyepop.vehicle:latest',
        forward=CropForward(targets=[
            InferenceComponent(ability='eyepop.vehicle.license-plate:latest')
        ])
    )
])

# VLM with prompts
Pop(components=[
    InferenceComponent(
        id=1,
        ability='eyepop.localize-objects:latest',
        params={"prompts": [{"prompt": "person"}]},
    )
])

set_pop() Only Accepts Pop Objects

# CORRECT
await endpoint.set_pop(Pop(components=[...]))

# WRONG - string form is removed
await endpoint.set_pop('ep_infer model=...')  # TypeError

Data API Types

from eyepop.data.data_types import (
    InferRequest,      # VLM inference request
    EvaluateRequest,   # Batch dataset evaluation
    TranscodeMode,     # Image transcode options
    Dataset,           # Dataset model
    Asset,             # Asset model
)

Examples Directory

Located at ~/Code/eyepop/eyepop-sdk-python/examples/

Working Examples

FilePurposeRun Command
pop_demo.pyComposable pops (main demo)python pop_demo.py --pop person -l example.jpg -o
caption_demo.pyVLM caption generationpython caption_demo.py -c eyepop.vlm.preview:latest -l example.jpg
infer_demo.pyVLM inference via data APIpython infer_demo.py -m qwen3-instruct -p "describe this" -a <uuid>
upload_image_timing.pyUpload benchmarks (4 strategies)python upload_image_timing.py example.jpg 10
upload_streaming.pyStream uploadpython upload_streaming.py example.jpg
upload_video.pyVideo uploadpython upload_video.py video.mp4
load_video_from_http.pyVideo from URLStandalone (hardcoded URL)
live_rtmp_stream.pyRTSP streamStandalone (hardcoded URL)
visualize_on_image.pyMatplotlib visualizationpython visualize_on_image.py example.jpg
visualize_with_webui2.pyDesktop webui2 visualizationpython visualize_with_webui2.py example.jpg
workflow_cli.pyWorkflow management CLIpython workflow_cli.py list-workflows
auth_session.pyOAuth2 device code flowpython auth_session.py -a <account-uuid>
download_video.pyDownload video assetpython download_video.py output.mp4 -a <uuid>
import_dataset.pyDataset import + auto-annotatepython import_dataset.py ./assets/

Test Data

Test images and videos are at ~/Code/eyepop/test_data/:

DirectoryContents
images/161 test images (people, kittens, misc scenes)
video/Test videos
kagel_dataset/Kaggle dataset

Testing an Example

The examples directory has its own venv at .venv/. Use .venv/bin/python directly.

Production (default — SDK defaults to compute.eyepop.ai, no EYEPOP_URL needed):

cd ~/Code/eyepop/eyepop-sdk-python/examples
set -a && source ~/Code/eyepop/.vault/.env.production && set +a
.venv/bin/python pop_demo.py --pop person -l ~/Code/eyepop/test_data/images/Hackers_02.jpg -o

Staging (must set EYEPOP_URL):

cd ~/Code/eyepop/eyepop-sdk-python/examples
set -a && source ~/Code/eyepop/.vault/.env.staging && set +a
export EYEPOP_URL=https://compute.staging.eyepop.xyz
.venv/bin/python pop_demo.py --pop person -l ~/Code/eyepop/test_data/images/Hackers_02.jpg -o

Development

cd ~/Code/eyepop/eyepop-sdk-python

# Install in dev mode
pip install -e ".[dev]"

# Run tests
uv run python -m pytest tests/

# Lint (changed files vs main)
task lint

# Lint all
task lint:all

# Type check
uvx basedpyright

Test PyPI Packages

Every push to a PR automatically publishes a dev package to test.pypi.org. The version is derived from setuptools_scm (e.g., 3.11.1.dev4). You can also trigger a manual publish via workflow_dispatch with a custom version.

The workflow is defined in .github/workflows/test-pypi-publish.yml.

Installing a Test PyPI Package

# Create a fresh venv
uv venv /tmp/eyepop-test-pypi --python 3.12

# Install the test PyPI version (need --index-strategy for uv to find it)
VIRTUAL_ENV=/tmp/eyepop-test-pypi uv pip install \
  --index-url https://test.pypi.org/simple/ \
  --extra-index-url https://pypi.org/simple/ \
  --index-strategy unsafe-best-match \
  eyepop==<VERSION>

# Install example dependencies
VIRTUAL_ENV=/tmp/eyepop-test-pypi uv pip install webui2 pybars3 python-dotenv pillow

Running Examples Against Test PyPI Package

# Load staging credentials and run
export $(grep -v '^#' ~/Code/eyepop/.vault/.env.staging | xargs)
export EYEPOP_URL="https://compute.staging.eyepop.xyz"

/tmp/eyepop-test-pypi/bin/python ~/Code/eyepop/eyepop-sdk-python/examples/pop_demo.py \
  -p person \
  -u "https://picsum.photos/id/237/200/300" \
  -o

Finding the Published Version

Check the test-pypi-publish CI job logs for the line: Uploading eyepop-<VERSION>-py3-none-any.whl

Or browse: https://test.pypi.org/project/eyepop/#history

Key Source Files

PurposePath
SDK entry pointeyepop/eyepopsdk.py
Worker endpointeyepop/worker/worker_endpoint.py
Worker types (Pop, components)eyepop/worker/worker_types.py
Data endpointeyepop/data/data_endpoint.py
Data types (InferRequest, etc.)eyepop/data/data_types.py
Visualizationeyepop/visualize.py
Package exportseyepop/__init__.py

Related Skills

SkillDescription
eyepop-authAuthentication, API keys, JWT tokens, vault files
eyepop-compute-apiCompute API that manages worker sessions
eyepop-workerWorker runtime (Go API + C pipeline)
eyepop-vlmVLM API details
eyepop-dataset-apiDataset API service

When not to use it

  • When `EYEPOP_API_KEY` is not available
  • When `EYEPOP_SECRET_KEY` is used for authentication
  • When `model=` or `modelUuid=` fields are used for `InferenceComponent`

Limitations

  • `EYEPOP_SECRET_KEY` is deprecated and should NOT be used
  • `model=` and `modelUuid=` fields on `InferenceComponent` are deprecated
  • `set_pop()` only accepts `Pop` objects, not string forms

How it compares

This skill provides a structured way to configure and authenticate the EyePop SDK, enabling composable inference pipelines through `Pop` objects, unlike direct API calls.

Compared to similar skills

eyepop-sdk side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
eyepop-sdk (this skill)01moReviewBeginner
azure-ai-contentunderstanding-py112dReviewIntermediate
llava78moReviewAdvanced
cocoindex69moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

azure-ai-contentunderstanding-py

microsoft

Azure AI Content Understanding SDK for Python. Use for multimodal content extraction from documents, images, audio, and video. Triggers: "azure-ai-contentunderstanding", "ContentUnderstandingClient", "multimodal analysis", "document extraction", "video analysis", "audio transcription".

12

llava

zechenzhangAGI

Large Language and Vision Assistant. Enables visual instruction tuning and image-based conversations. Combines CLIP vision encoder with Vicuna/LLaMA language models. Supports multi-turn image chat, visual question answering, and instruction following. Use for vision-language chatbots or image understanding tasks. Best for conversational image analysis.

7117

cocoindex

cocoindex-io

Comprehensive toolkit for developing with the CocoIndex library. Use when users need to create data transformation pipelines (flows), write custom functions, or operate flows via CLI or API. Covers building ETL workflows for AI data processing, including embedding documents into vector databases, building knowledge graphs, creating search indexes, or processing data streams with incremental updates.

6116

ai-multimodal

mrgoonie

Process and generate multimedia content using Google Gemini API. Capabilities include analyze audio files (transcription with timestamps, summarization, speech understanding, music/sound analysis up to 9.5 hours), understand images (captioning, object detection, OCR, visual Q&A, segmentation), process videos (scene detection, Q&A, temporal analysis, YouTube URLs, up to 6 hours), extract from documents (PDF tables, forms, charts, diagrams, multi-page), generate images (text-to-image, editing, composition, refinement). Use when working with audio/video files, analyzing images or screenshots, processing PDF documents, extracting structured data from media, creating images from text prompts, or implementing multimodal AI features. Supports multiple models (Gemini 2.5/2.0) with context windows up to 2M tokens.

9108

rag-implementation

wshobson

Build Retrieval-Augmented Generation (RAG) systems for LLM applications with vector databases and semantic search. Use when implementing knowledge-grounded AI, building document Q&A systems, or integrating LLMs with external knowledge bases.

10101

langchain-architecture

wshobson

Design LLM applications using the LangChain framework with agents, memory, and tool integration patterns. Use when building LangChain applications, implementing AI agents, or creating complex LLM workflows.

899

Search skills

Search the agent skills registry