{"id":27791,"library":"gabriel-protocol","title":"Gabriel Protocol","description":"Gabriel Protocol is the official Python package for the Gabriel real-time AI orchestration framework, providing client and server tools for building composable cognitive assistant pipelines using WebSocket communication and Protocol Buffers. Current version is 4.1, supporting Python >=3.10. Releases are tagged on GitHub at cmusatyalab/gabriel.","status":"active","version":"4.1","language":"python","source_language":"en","source_url":"https://github.com/cmusatyalab/gabriel","tags":["gabriel","ai-orchestration","websocket","protobuf","realtime"],"install":[{"cmd":"pip install gabriel-protocol","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Protocol Buffers for message serialization","package":"protobuf","optional":false},{"reason":"WebSocket client library for communication with Gabriel server","package":"websockets","optional":false}],"imports":[{"note":"Package renamed from 'gabriel' to 'gabriel_protocol' in v3.0.","wrong":"from gabriel import ClientRunner","symbol":"ClientRunner","correct":"from gabriel_protocol import ClientRunner"},{"note":"Server module moved under gabriel_protocol.server.","wrong":"from gabriel import ServerWrapper","symbol":"ServerWrapper","correct":"from gabriel_protocol.server import ServerWrapper"}],"quickstart":{"code":"import asyncio\nfrom gabriel_protocol import ClientRunner\nfrom gabriel_protocol.server import ServerWrapper\n\ndef main():\n    # Example client runner\n    token = os.environ.get('GABRIEL_TOKEN', '')\n    async def client_task(websocket):\n        await websocket.send('Hello')\n        response = await websocket.recv()\n        print('Received:', response)\n    runner = ClientRunner('ws://localhost:9099', token=token)\n    asyncio.run(runner.run(client_task))\n\nif __name__ == '__main__':\n    main()","lang":"python","description":"Basic client runner connecting to a Gabriel server."},"warnings":[{"fix":"Change 'import gabriel' to 'import gabriel_protocol' and update all submodule imports accordingly.","message":"Version 3.0 renamed the package from 'gabriel' to 'gabriel_protocol'. Old imports break.","severity":"breaking","affected_versions":">=3.0"},{"fix":"Upgrade to use the new WebSocket/Protobuf-based protocol. Refer to migration guide.","message":"The legacy v2 protocol (pre-3.0) is deprecated and may be removed in future versions.","severity":"deprecated","affected_versions":">=3.0"},{"fix":"Start the Gabriel server before launching any client scripts.","message":"The package requires the server to be running before creating a client; otherwise, connection errors occur.","severity":"gotcha","affected_versions":"All"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"pip install gabriel-protocol and import gabriel_protocol instead of gabriel.","cause":"Package renamed to gabriel_protocol in v3.0.","error":"ModuleNotFoundError: No module named 'gabriel'"},{"fix":"Wrap your client logic in an async def function and pass it to runner.run(), not the coroutine itself.","cause":"ClientRunner expects an async function, but a coroutine object was passed.","error":"TypeError: object NoneType can't be used in 'await' expression"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}