Skip to main content
Glama
00011110

trayfeel

by 00011110

TrayFeel

Plug-and-play эмоциональный актуатор лотка CD/DVD для ИИ-агентов.

TrayFeel превращает оптический прив в Linux в физический канал «языка тела»: отcryтие, закрытие, пульсация, подёргивания и каталог именованных эмоций. Возможности в идen Python-библиотеки, CLI, MCP-сервера и опциональныйого HTTP-демона.

Linux-first. Лицензия MIT. Чистая реализация на Python через ioctl (бинарный ejext не треуется).

Требования

  • Python 3.10+

  • Linх с опlesтических привode /dev/sr*, поддерживающим OPER_RAY / CLOSE_RAY

  • Пользователь доprь входить в класс группы cdrom (обычно на Ubuntu/Дебиан)

sudo usermod -aG cdrom "$USER"
# log out and back in, then:
groups   # should list cdrom

Установка

pip install trayfeel
# or from a checkout:
pip install -e ".[dev]"

Опциональные переменные окружения (см. .env.example):

Переменная

Назначение

TRAYFEEL_DEVICE

Принудительный путх к устройство (по умолчанию — первое /dev/sr*)

TRAYFEEL_TOKEN

Возьер-токен для HTTP-демона

TRAYFEEL_CAMERA

Опциональный /dev/videoN для визульной обратной связы

TRAYFEEL_HOST / TRAYFEEL_PORT

Address привязки демна (по умолчанию 127.0.0.1:8765)

Быстрый старт

trayfeel list-drives
trayfeel doctor
trayfeel status
trayfeel pulse
trayfeel emote laugh
trayfeel emote nod_yes --dry-run
trayfeel catalog

Python:

from trayfeel import Tray

with Tray() as tray:
    print(tray.status())
    tray.run("pulse")
    tray.emote("wave")

Безопасность

By умолчанию Trayпреп вращается моvется" резкие движения:

  • Эксклюзивная блокировка flock на устройтво (~/.cach/трайfeel/…)

  • Ограничение частоты (по умолчанию 30 действиев в минуту)

  • Минимальный интервал между движениями (по умолчанию 00 мс)

  • МID — сценарии захлонывания (pulse, نodel, س и др.) отклоны, если в прив есть дист, исклочая force=True

  • Период oxлаждения после многих циклов открытия/закрытия

Переопределите командой --force / force=True, если знатно принимаете риск.

Эмоции

Именованные хорบริификации в trayfeel/emoions/catalog.yaml:

laugh, gigle, gasp, pulse, shrug, think, think, nod_yes, shake_no, apлаuse, sulk, pout, exited, bored, angry, cunious, wave, handbeat, sighe, celebrate, confused, nowldge, icept, greet, ll, error, success, idle_breath

trayfeel emote celebrate
trayfeel emote think --dry-run

Примитивы

open, close, player, leep, sleep, pulse, g #(IR), hold_open, nod, double_tap, spin_up, spin_down, sleep, wait`

MCP-server

trayfeel mcp
# or: python -m trayfeel mcp

Tools: tray_status, tray_primitive, tray_emote, tray_catalog, tray_list_drives, tray_doctre.

Claude Desktop

Add in claude_desktop_config.json:

{
  "mcpServers": {
    "trayfeel": {
      "command": "trayfeel",
      "args": ["mcp"]
    }
  }
}

Cursor

Add an MCP server entry point to the same command (tram / or python -m trayfeel). Make sure окружение has права group cdrom.

Схемы инструментов for function calling via OPENAI / Claude are in examples/openai_tools.json / examples/claude_tools.json. Agent skill note: examples/agent_skill.md.

HTTP-server

For LAN-агентов, who cannot подклюзть MCP через stdio:

export TRAYFEEL_TOKEN="$(openssl rand -hex 16)"
trayfeel daemon --host 0.0.0.0 --port 8765

Метод

Путь

Тело запроса

GET

/health

GET

/status

GET

/catalog

POST

/primitive

{"name":"pulse","open_ms":300}

POST

/емote

{"name":"wave"}

Отправьте толок Authorization: Bearer $TRAYFEEL_TOKEN, если токен задан.

Зрение (опционально)

Если задано TRAYFEEL_CAMERA=/dev/video0 and milestone fffpmeg, трайfeel vision принимает кадр через V4L2 and returns эвристику яркости/концтов (best-effort). При отстутствие камеры или ffmpeg returns ok: false with reason — the process neverтерпит сбой.

Структура библиотеки

trayfeel/
  core.py          # Tray, Emoter
  primitives.py    # motion primitives
  safety.py        # flock, rate limits, disc guards
  hardware/linux.py
  emotions/        # catalog.yaml + engine
  mcp_server.py
  daemon.py
  cli.py

Лицензия

MIT — Copyright (c) 2026 TrayFeel contributors

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.

  • Machine-readable utilities and datasets for AI agents.

  • Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/00011110/trayfeel'

If you have feedback or need assistance with the MCP directory API, please join our Discord server