A modern, real-time chat interface for AgentUp AI agents with streaming responses.
This project is Apache 2 licensed, you're welcome to fork this and use it for build you're own, AgentUp applications!
- Real-time Streaming: Live streaming of AI responses with smooth text animation
- Agent Monitoring: Server status and agent information display
- Tools Discovery: View available agent tools and capabilities
- Session Management: Track and display current chat sessions
- Node.js 18.x or 20.x
- npm or yarn
- AgentUp server running on
localhost:8000(or configure in settings)
- Clone the repository:
git clone https://github.com/your-org/streamchat.git
cd streamchat- Install dependencies:
npm install- Start the development server:
npm run dev- Open http://localhost:3000 in your browser.
The app will automatically connect to your AgentUp server at localhost:8000. You can change this in the settings panel (gear icon in the top-right).
- ChatMessage: Renders individual chat messages with proper styling
- StreamingMessage: Handles live streaming of AI responses
- ChatInput: Modern input component with send functionality
- ToolsDisplay: Shows available agent tools and capabilities
- Settings: Configuration panel for server connection
- useStreamingChat: Manages WebSocket connection and message state
- useServerStatus: Monitors server health and fetches agent information
StreamChat integrates with AgentUp servers via:
- WebSocket: Real-time message streaming (
/chat/stream) - Agent Card: Tool discovery (
/.well-known/agent-card.json) - Health Check: Server status monitoring
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coveragenpm run lintnpm run build
npm startStreamChat expects your AgentUp server to provide:
-
WebSocket Endpoint:
/chat/stream- Accepts JSON-RPC messages
- Streams responses in real-time
-
Agent Card:
/.well-known/agent-card.json- Provides agent metadata and available tools
- Used for server status and tools display
-
Message Format:
interface Message {
message_id: string;
role: 'user' | 'assistant';
parts: Array<{ text: string }>;
timestamp: string;
}- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and add tests
- Run tests:
npm test - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Write tests for new components and features
- Follow the existing code style and conventions
- Use TypeScript for type safety
- Update documentation for significant changes
This project is licensed under the Apache 2 License - see the LICENSE file for details.
