{"id":27790,"library":"gabriel-client","title":"Gabriel Client","description":"Client library for the Gabriel real-time AI orchestration framework. Current version 4.1.7, requires Python >=3.10. Active development with periodic releases.","status":"active","version":"4.1.7","language":"python","source_language":"en","source_url":"https://github.com/cmusatyalab/gabriel/","tags":["gabriel","client","real-time","ai","orchestration","websockets"],"install":[{"cmd":"pip install gabriel-client","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"WebSocket communication with server","package":"websockets","optional":false},{"reason":"Protocol Buffers for message serialization","package":"protobuf","optional":false},{"reason":"gRPC support for token passing","package":"grpcio","optional":true}],"imports":[{"note":"Wrong module path; the client is in gabriel_client","wrong":"from gabriel import ClientRunner","symbol":"ClientRunner","correct":"from gabriel_client import ClientRunner"},{"note":null,"wrong":null,"symbol":"websocket_engine","correct":"from gabriel_client.websocket_engine import websocket_engine"},{"note":null,"wrong":null,"symbol":"gRPC engine","correct":"from gabriel_client.grpc_engine import grpc_engine"}],"quickstart":{"code":"import asyncio\nfrom gabriel_client import ClientRunner\nfrom gabriel_client.websocket_engine import websocket_engine\n\nasync def main():\n    server_address = 'localhost'\n    port = 9099\n    token = os.environ.get('GABRIEL_TOKEN', 'test_token')\n    engine_name = 'my_engine'\n    source = lambda: b'hello'  # dummy source, replace with actual\n    engine = websocket_engine(server_address, port, token, source)\n    runner = ClientRunner(engine, engine_name)\n    await runner.run()\n\nif __name__ == '__main__':\n    asyncio.run(main())","lang":"python","description":"Connects to a Gabriel server using WebSocket engine and runs a client."},"warnings":[{"fix":"Use gabriel-client v4.x with websocket_engine or grpc_engine. Do not use old socket-based code.","message":"Gabriel 3.0+ switched from TCP sockets to WebSockets/Protobuf. Legacy v2.x clients are incompatible.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Always pass a token string. If server doesn't enforce it, any non-empty string works.","message":"The token parameter is required but often omitted in examples; server may ignore it if not configured.","severity":"gotcha","affected_versions":"all"},{"fix":"Prefer websocket_engine unless you specifically need gRPC features and your server supports it.","message":"gRPC engine is deprecated in favor of WebSocket engine in newer Gabriel server versions.","severity":"deprecated","affected_versions":">=4.0.0"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Use: from gabriel_client import ClientRunner","cause":"Trying to import from 'gabriel' instead of 'gabriel_client'.","error":"ModuleNotFoundError: No module named 'gabriel'"},{"fix":"Upgrade to latest: pip install --upgrade gabriel-client, then import correctly.","cause":"Old version of gabriel-client installed (v2.x) or incorrect import path.","error":"AttributeError: module 'gabriel_client' has no attribute 'ClientRunner'"},{"fix":"Pass a token string to websocket_engine().","cause":"Token argument not provided (changed from optional to required in v4.x).","error":"TypeError: websocket_engine() missing 1 required positional argument: 'token'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}