Skip to main content

Social Interaction Cloud (SIC)

Build social robot applications without reinventing the wheel.

SIC is a Python framework that lets you connect robots, AI services, and sensors together — so you can focus on designing interactions, not wiring up infrastructure.


What Does SIC Do?

Imagine you want a robot to:

  1. 📷 See — use its camera to detect faces
  2. 🎤 Listen — transcribe what a person says
  3. 🧠 Think — generate a response with a large language model
  4. 🗣️ Speak — say the answer out loud

Normally, you'd need to integrate each SDK, manage network communication between devices, and synchronize everything yourself. SIC handles all of that. You write a short Python script; SIC takes care of the rest.

from sic_framework.devices import Nao
from sic_framework.services import FaceDetection

# Connect to the robot
nao = Nao("192.168.1.100")
camera = nao.camera()

# Start an AI service and receive results
face_detector = FaceDetection()
camera.register_callback(on_new_image)

Key Features

Feature Description
🤖 Multi-Robot Support NAO, Pepper, AlphaMini, Franka Emika, Reachy Mini, and Desktop
🧠 Built-in AI Services Speech recognition, text-to-speech, GPT, face detection, object detection, and more
🔌 Modular Architecture Plug-and-play components — mix and match sensors, services, and actuators
🌐 Distributed by Design Components can run on different machines and communicate over the network
👥 Multi-User Access Built-in reservation system so multiple researchers can share the same robot
🐳 Docker Support Run AI services in containers with a single command
🔗 MCP Integration Let LLM agents (ChatGPT, Claude, etc.) control the robot via the Model Context Protocol

How It Works

SIC uses Redis as a message bus. Every component — whether it's a camera on a robot, a face detection model on a GPU server, or your Python script on a laptop — communicates through Redis channels.

 Your Computer               Redis Server              Robot (NAO / Pepper)
┌────────────────┐          ┌────────────┐           ┌────────────────────┐
│  Python script │ ◄─msg──► │   Redis    │ ◄──msg──► │  Camera sensor     │
│  (Connectors)  │          │  (Pub/Sub) │           │  Microphone        │
└────────────────┘          └────────────┘           │  Speakers / Motors │
       ▲                         ▲                   └────────────────────┘
       │                         │
       ▼                         ▼
┌────────────────┐          ┌────────────┐
│  AI Services   │ ◄─msg──► │   Redis    │
│  (GPT, STT,    │          │            │
│   Face Det.)   │          └────────────┘
└────────────────┘

Building Blocks

SIC applications are built by connecting three types of Components:

Component Role Examples
Sensor Collects data from the environment Camera, microphone
Service Transforms data using AI / logic Face detection, speech-to-text, GPT
Actuator Performs physical actions Speaking, moving joints, displaying on a tablet

These components are managed behind the scenes by:

  • ComponentManager — starts and stops components on each device
  • Connector — your remote control to interact with any component from your script
  • SICApplication — manages the lifecycle of your entire program (connections, shutdown, logging)

Supported Platforms

Robots

Platform Connection Notes
NAO SSH + Redis Python 2.7 on the robot, Python 3.10+ on your machine
Pepper SSH + Redis Same as NAO; includes tablet, bumpers, depth camera
AlphaMini WebSocket + Redis Requires alphamini SDK
Franka Emika panda-python + Redis Research robot arm
Reachy Mini reachy-mini SDK Expressive tabletop robot
Desktop Local hardware Use your laptop's camera, mic, and speakers

AI Services

Service Technology Install Extra
Speech-to-Text (Google) Google Cloud Speech pip install .[google-stt]
Speech-to-Text (Whisper) OpenAI Whisper API pip install .[whisper-speech-to-text]
Speech-to-Text (Local Whisper) faster-whisper / mlx-whisper pip install .[local-whisper-stt]
Text-to-Speech (Google) Google Cloud TTS pip install .[google-tts]
Text-to-Speech (ElevenLabs) ElevenLabs API pip install .[elevenlabs-tts]
LLM (OpenAI GPT) OpenAI API pip install .[openai-gpt]
LLM (Nebula) OpenAI-compatible API pip install .[nebula]
Face Detection DNN / Haar Cascade (included by default)
Object Detection Ultralytics YOLO pip install .[object-detection]
Voice Activity Detection PyTorch audio pip install .[voice-detection]
Dialogflow Google Cloud Dialogflow pip install .[dialogflow]
Dialogflow CX Google Cloud Dialogflow CX pip install .[dialogflow-cx]
Speaker Diarization NVIDIA NeMo SortFormer pip install .[sortformer]
MCP (Robot-as-Tool for LLMs) LangChain + FastMCP pip install .[mcp]

Installation

Requirements: Python 3.10–3.12, Redis

1. Install SIC

pip install social-interaction-cloud

Or install from source with optional extras:

git clone https://github.com/Social-AI-VU/social-interaction-cloud.git
cd social-interaction-cloud
pip install -e .                    # core only
pip install -e ".[openai-gpt]"     # with GPT support
pip install -e ".[dev]"            # with development tools

2. Install and Start Redis

Ubuntu / Debian:

sudo apt install redis
redis-server conf/redis/redis.conf

macOS:

brew install redis
redis-server conf/redis/redis.conf

Windows:

# Download Redis from https://github.com/microsoftarchive/redis/releases
# or use Docker:
docker run -d -p 6379:6379 --name redis redis:latest

3. Configure Environment

Create a .env file (or copy from sic_applications/conf/.example_env):

DB_IP=localhost
DB_PASS=changemeplease
OPENAI_API_KEY=your-key-here  # optional, for GPT/Whisper services

4. Run Your First Application

Clone the demo applications:

git clone https://github.com/Social-AI-VU/sic_applications.git
cd sic_applications/demos/desktop
python demo_desktop_camera.py

This opens your webcam feed through SIC's component system. If it works, you're all set! 🎉


Project Structure

social-interaction-cloud/
├── setup.py                        # Package configuration & extras
├── conf/redis/                     # Redis server configuration
├── docs/                           # Sphinx documentation source
└── sic_framework/                  # Main framework package
    ├── core/                       # ← Framework internals
    │   ├── component_python2.py    #   Base class for all components
    │   ├── component_manager_python2.py  #   Starts/stops components on hosts
    │   ├── connector.py            #   User API to interact with components
    │   ├── message_python2.py      #   Message types & serialization
    │   ├── sic_redis.py            #   Redis pub/sub wrapper
    │   ├── sic_application.py      #   Application lifecycle (singleton)
    │   ├── service_python2.py      #   Service base (with input alignment)
    │   ├── sensor_python2.py       #   Sensor base (continuous data)
    │   ├── actuator_python2.py     #   Actuator base (request-reply)
    │   └── sic_compose.py          #   Docker Compose lifecycle helpers
    ├── devices/                    # ← Robot platform drivers
    │   ├── nao.py, pepper.py       #   SoftBank Robotics (NAOqi)
    │   ├── alphamini.py            #   UBTech AlphaMini
    │   ├── franka.py               #   Franka Emika robot arm
    │   ├── reachy_mini.py          #   Pollen Robotics Reachy Mini
    │   ├── desktop.py              #   Local machine (camera/mic/speakers)
    │   └── common_*/               #   Platform-specific sensors & actuators
    ├── services/                   # ← AI & processing services
    │   ├── llm/                    #   GPT, Nebula (LLM wrappers)
    │   ├── google_stt/             #   Google Speech-to-Text
    │   ├── google_tts/             #   Google Text-to-Speech
    │   ├── elevenlabs_tts/         #   ElevenLabs Text-to-Speech
    │   ├── openai_whisper_stt/     #   Whisper Speech-to-Text
    │   ├── local_whisper_stt/      #   Local Whisper (faster-whisper/mlx)
    │   ├── face_detection/         #   Face detection (DNN/Haar)
    │   ├── object_detection/       #   YOLO object detection
    │   ├── voice_detection/        #   Voice activity detection
    │   ├── streaming_sortformer/   #   Speaker diarization
    │   ├── webserver/              #   Flask web interface
    │   └── templates/              #   Templates for creating new components
    ├── mcp/                        # ← Model Context Protocol
    │   ├── mcp_server.py           #   MCP server base class
    │   ├── mcp_client.py           #   LangChain MCP client
    │   └── nao/                    #   NAO MCP implementation
    └── docker/                     # ← Docker images for services

Architecture Deep Dive

Component Lifecycle

User Script                    ComponentManager (on device)         Component
     │                                │                                │
     │  SICStartComponentRequest      │                                │
     │ ──────────────────────────►    │                                │
     │                                │  create + start thread         │
     │                                │ ─────────────────────────────► │
     │                                │                   ready_event  │
     │  SICComponentStartedMessage    │  ◄──────────────────────────── │
     │ ◄──────────────────────────    │                                │
     │                                │                                │
     │         (messages / requests flow via Redis pub/sub)            │
     │ ◄─────────────────────────────────────────────────────────────► │
     │                                │                                │
     │  SICStopComponentRequest       │                                │
     │ ──────────────────────────►    │  stop + cleanup                │
     │                                │ ─────────────────────────────► │

Message Types

All data flows through SICMessage objects, serialized with Python's Pickle (protocol 2 for Python 2/3 cross-compatibility):

  • SICMessage — one-way broadcast (async)
  • SICRequest → SICMessage — request-reply (sync, with timeout)
  • CompressedImageMessage — JPEG-compressed image (via TurboJPEG)
  • AudioMessage — PCM 16-bit audio data
  • TextMessage — plain text
  • BoundingBoxesMessage — detection results with coordinates

Multi-Input Synchronization

SICService automatically aligns inputs from multiple sources by timestamp. For example, a sentiment analysis service that needs both audio and text will wait until it has time-aligned data from both before calling execute().


Creating Custom Components

SIC includes templates to help you create your own components:

sic_framework/services/templates/
├── template_sensor.py        # Continuous data producer
├── template_actuator.py      # Request-reply action performer
├── template_service.py       # Data transformer
└── template_component.py     # Generic component

Documentation

📖 Full documentation: social-ai-vu.github.io/social-interaction-cloud

📦 Demo applications: github.com/Social-AI-VU/sic_applications

📹 Video tutorial: Installation & Setup (YouTube)


CLI Commands

SIC provides command-line shortcuts to start services:

run-face-detection          # Start face detection service
run-gpt                     # Start OpenAI GPT service
run-whisper                 # Start Whisper STT service
run-google-tts              # Start Google TTS service
run-google-stt              # Start Google STT service
run-elevenlabs-tts          # Start ElevenLabs TTS service
run-object-detection        # Start YOLO object detection service
run-voice-detection         # Start voice activity detection
run-webserver               # Start Flask web interface
run-dialogflow              # Start Dialogflow service
run-dialogflow-cx           # Start Dialogflow CX service
run-nebula                  # Start Nebula LLM service
run-redis                   # Start Redis datastore service
run-sortformer              # Start SortFormer diarization
run-local-whisper           # Start local Whisper STT
run-nao-mcp                 # Start NAO MCP server

Citation

If you use SIC in your research, please cite:

@software{sic,
  title   = {Social Interaction Cloud},
  author  = {Ligthart, Mike E.U. and Brown, Landon and Schwarzenbach, Lilly and Hindriks, Koen V.},
  url     = {https://github.com/Social-AI-VU/social-interaction-cloud},
  license = {MIT}
}

Contributing

We welcome contributions! Please see the contribution guidelines in the documentation.

Development setup:

pip install -e ".[dev]"
pre-commit install

License

This project is licensed under the MIT License — see the LICENSE file for details.


Developed at Vrije Universiteit Amsterdam · Social AI Group

Metadata

Release files for social-interaction-cloud 2.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for social-interaction-cloud 2.3.0
File Size Uploaded
social_interaction_cloud-2.3.0.tar.gz 582.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for social-interaction-cloud 2.3.0
File Interpreter ABI Platform
social_interaction_cloud-2.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / social_interaction_cloud-2.3.0.tar.gz

Download URL social_interaction_cloud-2.3.0.tar.gz
Size 582.2 kB
Tags Source
SHA-256 checksum
How to use checksums
18aaa310ee4264d3abf86680f55a99dd0d9fdccf05aa77736fae1d5b1d49c103
BLAKE2b-256 checksum
How to use checksums
aa9af3dbdcef318f51e25296d874e530350fdff5ad0eb44a405849535e4ff7b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release files / social_interaction_cloud-2.3.0-py3-none-any.whl

Download URL social_interaction_cloud-2.3.0-py3-none-any.whl
Size 647.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9f6d25822f1867c046ce93213c56b3e16afacaafbd930309a04abb4ba8b46ce7
BLAKE2b-256 checksum
How to use checksums
e75d8f00091cb047e387e6166880966b08c521b008ba4db791c8c00852f66f16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.3.0 This release

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.9

2 release files

2.1.8

2 release files

2.1.7

2 release files

2.1.6

2 release files

2.1.5

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.40

2 release files

2.0.39

2 release files

2.0.37

2 release files

2.0.36

2 release files

2.0.35

2 release files

2.0.34

2 release files

2.0.32

2 release files

2.0.31

2 release files

2.0.29

2 release files

2.0.27

2 release files

2.0.26

2 release files

2.0.25

2 release files

2.0.24

2 release files

2.0.23

2 release files

2.0.22

2 release files

2.0.21

2 release files

2.0.16

2 release files

2.0.15

2 release files

2.0.14

2 release files

2.0.13

2 release files

2.0.12

2 release files

2.0.11

2 release files

2.0.10

2 release files

2.0.9

2 release files

2.0.8

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.1

2 release files

1.2.8

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page