An AI Agent project built with Dart. Interact with LLMs through a CLI or Flutter app.
skewr/
├── chat_core/ # Core library - conversation, tool calling, event stream
├── chat_adapter/ # BLoC state management, adapter between Core and UI
├── skewr_cli/ # Command-line interface
└── skewr_app/ # Flutter app (future)
Dependency direction: skewr_cli / skewr_app → chat_adapter → chat_core
- Dart SDK
^3.8.0 - A Portkey API key
Create a local.properties file in the project root:
portkey-api-key=your-api-key
portkey-model=@provider-slug/model-nameOptional:
portkey-base-url=https://api.portkey.ai
portkey-max-tokens=1024Configuration can also be set via environment variables (PORTKEY_API_KEY, PORTKEY_MODEL, PORTKEY_BASE_URL, PORTKEY_MAX_TOKENS) or CLI arguments (--api-key, --model, --base-url, --max-tokens).
Priority: CLI arguments > local.properties > environment variables.
cd skewr_cli
dart pub get
dart run bin/skewr_cli.dartOr with CLI arguments:
dart run bin/skewr_cli.dart --api-key your-key --model @openai/gpt-4o# chat_core
cd chat_core
dart pub get
dart run build_runner build
dart test
# chat_adapter
cd chat_adapter
dart pub get
dart test
# skewr_cli
cd skewr_cli
dart pub get
dart testMIT
