UNPKG

@smythos/cli

Version:

SmythOS SRE Command Line Interface

305 lines (212 loc) 8.43 kB
Command line interface for SmythOS SRE (Smyth Runtime Environment) - an advanced agentic AI platform that provides a comprehensive runtime environment for building and managing AI agents. ## Installation ```bash pnpm install -g @smythos/cli ``` ## Commands Overview The SRE CLI provides three main commands: - `sre agent` - Run SmythOS agent files with various execution modes - `sre create` - Create new SmythOS projects - `sre update` - Update the CLI and check for updates --- ## Agent Command Run SmythOS agent files (.smyth) with different execution modes. ### Basic Usage ```bash sre agent <path-to-agent.smyth> [options] ``` ### Available Modes #### 1. Chat Mode (`--chat`) Start an interactive chat interface with the agent: ```bash sre agent ./myagent.smyth --chat sre agent ./myagent.smyth --chat claude-3.7-sonnet sre agent ./myagent.smyth --chat gpt-4o ``` **Options:** - `--chat` - Start chat with default model (gpt-4o) - `--chat <model>` - Start chat with specified model #### 2. Prompt Mode (`--prompt`) Query the agent with a single prompt: ```bash sre agent ./myagent.smyth --prompt "What is the weather in Tokyo?" sre agent ./myagent.smyth --prompt "Analyze this data" claude-3.7-sonnet ``` **Options:** - `--prompt <text>` - Send a prompt to the agent - `--prompt <text> <model>` - Send a prompt using specific model #### 3. Skill Execution (`--skill`) Execute a specific skill from the agent: ```bash sre agent ./myagent.smyth --skill getUserInfo sre agent ./myagent.smyth --skill processData input="sample data" format="json" sre agent ./myagent.smyth --skill ask question="who are you" ``` **Options:** - `--skill <skillname>` - Execute a skill without parameters - `--skill <skillname> key1="value1" key2="value2"` - Execute skill with parameters #### 4. MCP Server Mode (`--mcp`) Start the agent as an MCP (Model Context Protocol) server: ```bash sre agent ./myagent.smyth --mcp sre agent ./myagent.smyth --mcp stdio sre agent ./myagent.smyth --mcp sse 3388 ``` **Options:** - `--mcp` - Start MCP server with default settings (stdio) - `--mcp stdio` - Start MCP server using stdio transport - `--mcp sse` - Start MCP server using SSE transport (default port 3388) - `--mcp sse <port>` - Start MCP server using SSE transport on specified port ### Global Options These options work with all execution modes: #### Vault Configuration (`--vault`) Provide a vault file for secure credential storage: ```bash sre agent ./myagent.smyth --chat --vault ./secrets.vault sre agent ./myagent.smyth --skill getUserInfo --vault ./myvault.json ``` #### Models Configuration (`--models`) Specify custom models configuration: ```bash sre agent ./myagent.smyth --chat --models ./custom-models.json sre agent ./myagent.smyth --prompt "Hello" --models ./prod-models.json ``` ### Complete Examples ```bash # Interactive chat with custom vault sre agent ./agent.smyth --chat --vault ./secrets.vault # Execute skill with parameters and vault sre agent ./agent.smyth --skill processData input="test" format="json" --vault ./vault.json # One-time prompt with specific model and custom models config sre agent ./agent.smyth --prompt "Summarize this data" claude-3.7-sonnet --models ./models.json # Start MCP server with vault authentication sre agent ./agent.smyth --mcp sse 8080 --vault ./secrets.vault # Chat with multiple configurations sre agent ./agent.smyth --chat gpt-4o --vault ./vault.json --models ./models.json ``` --- ## Create Command Create a new SmythOS project with interactive setup: ```bash sre create sre create "My AI Project" ``` **Features:** - Interactive project setup wizard - Multiple project templates: - Empty Project - Minimal: Just the basics to get started - Interactive: Chat with one agent - Interactive chat with agent selection - Automatic vault setup with API key detection - Smart resource folder configuration **Examples:** ```bash # Interactive project creation sre create # Create project with specific name sre create "Customer Support Bot" ``` --- ## Update Command Check for and install CLI updates: ```bash sre update sre update --check sre update --force sre update --package pnpm ``` **Options:** - `--check, -c` - Only check for updates without installing - `--force, -f` - Force update check and installation - `--package, -p <manager>` - Specify package manager (npm, pnpm, yarn) **Examples:** ```bash # Check and install updates sre update # Only check for updates sre update --check # Force update with specific package manager sre update --force --package npm # Check updates using yarn sre update --check --package yarn ``` --- ## Global Options - `--help, -h` - Show help for any command - `--version` - Show CLI version ## File Formats - **Agent Files**: `.smyth` files containing agent configuration and workflows - **Vault Files**: `.json` or `.vault` files for secure credential storage - **Models Files**: `.json` files defining available LLM models ## Models Configuration The `--models` flag allows you to specify custom model configurations for your agents. You can provide either: - **Single JSON file**: A single `.json` file containing model definitions - **Directory**: A directory containing multiple `.json` files (all will be merged) ### Usage Examples ```bash # Single models file sre agent ./myagent.smyth --chat --models ./models.json # Directory with multiple model files sre agent ./myagent.smyth --chat --models ./models-config/ # Multiple model files in a directory sre agent ./myagent.smyth --skill processData --models ./custom-models/ ``` ### Models File Format Each model configuration file should be a JSON object where keys are model names and values are model configurations: ```json { "gemma-3-4b": { "provider": "OpenAI", "label": "gemma-3-4b-it", "modelId": "gemma-3-4b-it", "features": ["text", "tools"], "tokens": 8000, "completionTokens": 512, "enabled": true, "baseURL": "http://localhost:1234/v1", "credentials": ["vault"] }, "gemma-3-1b": { "provider": "OpenAI", "label": "gemma-3-1b-it", "modelId": "gemma-3-1b-it", "features": ["text", "tools"], "tokens": 4096, "completionTokens": 512, "enabled": true, "baseURL": "http://localhost:1234/v1", "credentials": ["vault"] } } ``` ### Model Configuration Properties - **`provider`**: The LLM provider (e.g., "OpenAI", "Anthropic", "Google") - **`label`**: Display name for the model - **`modelId`**: The actual model identifier used by the provider - **`features`**: Array of supported features (`["text", "tools"]`) - **`tokens`**: Maximum input tokens supported - **`completionTokens`**: Maximum completion tokens - **`enabled`**: Whether the model is available for use - **`baseURL`**: Custom API endpoint (optional) - **`credentials`**: Array specifying how to retrieve credentials (`["vault"]`) ### Directory Structure Example When using a directory, you can organize models by provider or type: ``` models-config/ ├── openai-models.json ├── anthropic-models.json ├── local-models.json └── custom-models.json ``` All JSON files in the directory will be automatically merged, allowing you to organize your model configurations however you prefer. ## Configuration The CLI supports various configuration options through: - Command-line flags - Environment variables - Configuration files - Interactive prompts during project creation For detailed configuration options and advanced usage, see the [SmythOS documentation](https://github.com/smythos/sre). ### Reporting Issues If you face any issues with the CLI or the code, set environment variable LOG_LEVEL="debug" and run your code again. Then share the logs with us, it will help diagnose the problem. You can request help on our [Discord](https://discord.gg/smythos) or by creating an issue on [GitHub](https://github.com/SmythOS/smythos/issues)