diff --git a/.github/workflows/compile-llms-txt.yml b/.github/workflows/compile-llms-txt.yml new file mode 100644 index 00000000..6859366e --- /dev/null +++ b/.github/workflows/compile-llms-txt.yml @@ -0,0 +1,29 @@ +name: Compile llms.txt + +on: + push: + branches: + - main + paths: + - 'docs/**/*.mdx' + +jobs: + compile: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + - name: Compile llms.txt + run: | + cd docs + python compile_llms.py + - name: Commit and push changes + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add docs/llms.txt + git commit -m "Update llms.txt" || exit 0 + git push diff --git a/docs/compile_llms_txt.py b/docs/compile_llms_txt.py new file mode 100644 index 00000000..503f311b --- /dev/null +++ b/docs/compile_llms_txt.py @@ -0,0 +1,37 @@ +import os + +def compile_llms_txt(): + # Get the docs directory path (where this script is located) + docs_dir = os.path.dirname(os.path.abspath(__file__)) + content = '' + # Define names of directories and files to exclude + excluded_names = {'tool'} + + # Change to docs directory + os.chdir(docs_dir) + + for root, _, files in os.walk('.'): + # Get the last part of the current directory + current_dir = os.path.basename(root) + if current_dir in excluded_names: + continue + + for file in files: + if file.endswith('.mdx'): + if file in excluded_names: + continue + + file_path = os.path.join(root, file) + relative_path = os.path.relpath(file_path, '.') + + with open(file_path, 'r', encoding='utf-8') as f: + file_content = f.read() + content += f"## {relative_path}\n\n{file_content}\n\n" + + # Write the complete content, replacing the existing file + output_path = os.path.join(docs_dir, 'llms.txt') + with open(output_path, 'w', encoding='utf-8') as f: + f.write(content) + +if __name__ == "__main__": + compile_llms_txt() diff --git a/docs/development.mdx b/docs/development.mdx deleted file mode 100644 index b8fb9d3d..00000000 --- a/docs/development.mdx +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: 'Development' -description: 'Learn how to preview changes locally' ---- - - - **Prerequisite**: Please install Node.js (version 19 or higher) before proceeding. - - -Step 1. Install Mintlify on your OS: - - - -```bash npm -npm i -g mintlify -``` - -```bash yarn -yarn global add mintlify -``` - - - -Step 2. Go to the docs are located (where you can find `mint.json`) and run the following command: - -```bash -mintlify dev -``` - -The documentation website is now available at `http://localhost:3000`. - -### Custom Ports - -Mintlify uses port 3000 by default. You can use the `--port` flag to customize the port Mintlify runs on. For example, use this command to run in port 3333: - -```bash -mintlify dev --port 3333 -``` - -You will see an error like this if you try to run Mintlify in a port that's already taken: - -```md -Error: listen EADDRINUSE: address already in use :::3000 -``` - -## Mintlify Versions - -Each CLI is linked to a specific version of Mintlify. Please update the CLI if your local website looks different than production. - - - -```bash npm -npm i -g mintlify@latest -``` - -```bash yarn -yarn global upgrade mintlify -``` - - - -## Deployment - - - Unlimited editors available under the [Pro - Plan](https://mintlify.com/pricing) and above. - - -You should see the following if the deploy successfully went through: - - - - - -## Troubleshooting - -Here's how to solve some common problems when working with the CLI. - - - - Update to Node v18. Run `mintlify install` and try again. - - -Go to the `C:/Users/Username/.mintlify/` directory and remove the `mint` -folder. Then Open the Git Bash in this location and run `git clone -https://github.com/mintlify/mint.git`. - -Repeat step 3. - - - - Try navigating to the root of your device and delete the ~/.mintlify folder. - Then run `mintlify dev` again. - - \ No newline at end of file diff --git a/docs/llms.txt b/docs/llms.txt new file mode 100644 index 00000000..dc5c556a --- /dev/null +++ b/docs/llms.txt @@ -0,0 +1,1103 @@ +## introduction.mdx + +--- +title: Introduction +description: 'The easiest way to start your agent project' +icon: 'hand-point-up' +--- + +AgentStack Logo +AgentStack Logo + +AgentStack is a valuable developer tool for quickly scaffolding agent projects. + +_Think `create-next-app` for Agents._ + +### Features of AgentStack +- Instant project setup with `agentstack init` +- Useful CLI commands for generating new agents and tasks in the development cycle +- A myriad of pre-built tools for Agents + +## What is _the agent stack_ +The agent stack is the list of tools that are collectively the _agent stack_. + +This is similar to the tech stack of a web app. An agent's tech stack is comprised of the following: + +Agent Stack Example + +Whether a project is built with AgentStack or not, the concept of the agent stack remains the same. + +## What is **AgentStack** +Our project is called **AgentStack** because it's the easiest way to quickly scaffold your agent stack! With a couple CLI commands, you can create a near-production ready agent! + +## First Steps + + + + Install the AgentStack CLI + + + A quickstart guide to using the CLI + + + High level overview of AgentStack + ![thumbnail](https://cdn.loom.com/sessions/thumbnails/b87b6a42d99c435a9ee328bf3e57a594-c297554684e16934-full-play.gif) + + + Build a simple web scraper agent + ![thumbnail](https://cdn.loom.com/sessions/thumbnails/68d796b13cd94647bd1d7fae12b2358e-5d62273c24a53191-full-play.gif) + + + +## quickstart.mdx + +--- +title: 'Quickstart' +description: 'Start building AI agents in under 5 minutes' +icon: 'circle-play' +--- + +## Initialize a new project + +AgentStack's greatest ability is that of quickly scaffolding agent projects + +To start, ensure you have AgentStack [installed](/installation) and run: +```bash +agentstack init +``` + + +**With the Wizard** + +Optionally, if you're a little overwhelmed with the code generated, you can use our Wizard to help guide you through some core setup! +```bash +agentstack init --wizard +``` + +**With a Template** + +By default, your project will contain no agents or tasks. + +If you find it easier to start with a complete project and edit it to fit your use-case, you can use [Templates](/templates/templates) + +```bash +agentstack init --template= +``` + +## Building your project + +AgentStack 0.2 is built on top of [CrewAI](https://docs.crewai.com/introduction). The majority of your development experience will be with Crew. + +When working with your Crew project, AgentStack makes generating new agents and tasks easy. + +### Agents + +To generate a new agent, run `agentstack generate agent ` - [More Info](/essentials/generating-agents) + +### Tasks + +To generate a new task, run `agentstack generate task ` - [More Info](/essentials/generating-tasks) + + +## Quickstart Tutorial + + + Build a simple web scraper agent + ![thumbnail](https://cdn.loom.com/sessions/thumbnails/68d796b13cd94647bd1d7fae12b2358e-5d62273c24a53191-full-play.gif) + + + +## installation.mdx + +--- +title: 'Installation' +description: 'Installing AgentStack is super easy!' +icon: 'cloud-arrow-down' +--- + +## Installing with Brew +```bash +brew tap agentops-ai/tap +brew install agentstack +``` + +## Installing with pipx +```bash +pipx install agentstack +``` + +## Installing with UV + + + +```bash +curl -LsSf https://astral.sh/uv/install.sh | sh +``` + + +```bash +uv venv +``` + + + ```bash + uv pip install agentstack + ``` + + + + +## After installing + +Run `agentstack --version` to verify that the CLI is installed and accessible. + +**Congrats! You now have AgentStack installed in your environment** + + + + A quickstart guide to using the CLI + + + +## snippets/snippet-intro.mdx + +One of the core principles of software development is DRY (Don't Repeat +Yourself). This is a principle that apply to documentation as +well. If you find yourself repeating the same content in multiple places, you +should consider creating a custom snippet to keep your content in sync. + + +## tools/tools.mdx + +--- +title: 'Tools' +description: 'Giving your agents tools should be easy' +--- + +## Installation + +Once you find the right tool for your use-case, install it with simply +```bash +agentstack tools add +``` + +You can also specify a tool, and one or more agents to install it to: +```bash +agentstack tools add --agents=, +``` + + + Add your own tool to the AgentStack repo [here](/contributing/adding-tools)! + + +## tools/community.mdx + +--- +title: 'Community Tools' +description: 'AgentStack tools from community contributors' +--- + +## Web Retrieval +- [AgentQL](/tools/tool/agentql) + +## Browsing + +[//]: # (- [Browserbase](/tools/tool/browserbase)) +- [Firecrawl](/tools/tool/firecrawl) + +## Search +- [Perplexity](/tools/tool/perplexity) + +## Memory / State + +- [Mem0](/tools/tool/mem0) + +## Code Execution + +- [Open Interpreter](/tools/tool/open-interpreter) + +## Unified API + +- [Composio](/tools/tool/composio) + +## Network Protocols +- [Agent Connect](/tools/tool/agent-connect) + +## Application Specific +- [Stripe](/tools/tool/stripe) + + + + Default tools in AgentStack + + + +## tools/package-structure.mdx + + +## Tool Configuration +Each tool gets a directory inside `agentstack/_tools/` where the tool's +source code and configuration will be stored. + +The directory should contain the following files: + +`config.json` +------------- +This contains the configuration for the tool for use by AgentStack, including +metadata, dependencies, configuration & functions exposed by the tool. + +`__init__.py` +--------- +Python package which contains the framework-agnostic tool implementation. Tools +are simple packages which exponse functions; when a tool is loaded into a user's +project, it will be wrapped in the framework-specific tool format by AgentStack. + + +`config.json` Format +-------------------- + +### `name` (string) [required] +The name of the tool in snake_case. This is used to identify the tool in the system. + +### `url` (string) [optional] +The URL of the tool's repository. This is provided to the user to allow them to +learn more about the tool. + +### `category` (string) [required] +The category of the tool. This is used to group tools together in the CLI. + +### `cta` (string) [optional] +String to print in the terminal when the tool is installed that provides a call to action. + +### `env` (list[dict(str, Any)]) [optional] +Definitions for environment variables that will be appended to the local `.env` file. +This is a list of key-value pairs ie. `[{"ENV_VAR": "value"}, ...]`. +In cases where the user is expected to provide their own information, the value is +set to `null` which adds it to the project's `.env` file as a comment. + +### `dependencies` (list[str]) [optional] +List of dependencies that will be installed in the user's project. It is +encouraged that versions are specified, which use the `package>=version` format. + +### `tools` (list[str]) [required] +List of public functions that are accessible in the tool implementation. + + + +## tools/core.mdx + +--- +title: 'Core Tools' +description: 'AgentStack tools that are not third-party integrations' +--- + +## File System + +- [Directory Search](/tools/tool/dir_search) +- [File Read](/tools/tool/file_read) +- [FTP](/tools/tool/ftp) + +## Code Execution + +- [Code Interpreter](/tools/tool/code-interpreter) + +## Data Input +- [Vision](/tools/tool/vision) + + + + Third party tools from the Agent Community + + + +## contributing/adding-tools.mdx + +--- +title: 'Adding Tools' +description: 'Contribute your own Agent tool to the ecosystem' +--- + +If you're reading this section, you probably have a product that AI agents can use as a tool. We're glad you're here! + +Adding tools is easy once you understand the project structure. A few things need to be done for a tool to be considered completely supported: + + + + - Create a new tool config at `agentstack/_tools//config.json` + - As an example, look at our [tool config fixture](https://github.com/AgentOps-AI/AgentStack/blob/main/tests/fixtures/tool_config_max.json) + - AgentStack uses this to know what code to insert where. Follow the structure to add your tool. + + + - In `agentstack/_tools`, you'll see other implementations of tools. + - Create a file `agentstack/_tools//__init__.py`, + - Build your tool implementation simply as python functions in this file. The functions that are to be exposed to the agent as a *tool* should contain detailed docstrings and have typed parameters. + - The tools that are exported from this file should be listed in the tool's config json. + + + Manually test your tool integration by running `agentstack tools add ` and ensure it behaves as expected. + This must be done within an AgentStack project. To create your test project, run `agentstack init test_proj`, then `cd` into the project and try adding your tool. + + + + + +# Tool Config +- `name` (str) - Name of your tool +- `category` (str) - Category your tool belongs in +- `tools` (List[str]) - The exported functions within your tool file +- `url` (str) - URL to where developers can learn more about your tool +- `tools_bundled` (bool) - True if the tool file exports a list of tools +- `cta` (str) - Call To Action printed in the terminal after install +- `env` (dict) - Key: Environment variable name; Value: default value +- `packages` (List[str]) - Python packages to be installed to support your tool +- `post_install` (str) - A script to be run after install of your tool +- `post_remove` (str) - A script to be run after removal of your tool + +## contributing/project-structure.mdx + +--- +title: 'Project Structure' +description: 'Concepts and Structure of AgentStack' +--- + +> This document is a work-in-progress as we build to version 0.3 and helps +define the structure of the project that we are aiming to create. + +AgentStack is a framework-agnostic toolkit for bootstrapping and managing +AI agents. Out of the box it has support for a number of tools and generates +code to get your project off the ground and deployed to a production environment. +It also aims to provide robust tooling for running and managing agents including +logging, debugging, deployment, and observability via [AgentOps](https://www.agentops.ai/). + +Developers with limited agent experience should be able to get an agentic +workflow up and running in a matter of minutes. Developers with more experience +should be able to leverage the tools provided by AgentStack to create more +complex workflows and deploy them to production with ease. + +# Concepts + +## Projects +A project is a user's implementation of AgentStack that is used to implement +and agentic workflow. This is a directory the `agentstack` shell command is +executed from. + +## Frameworks +Frameworks are the target platforms that `agentstack` can generate code for. +We don't implement all of the functionality provided by a framework, but instead +leverage them to create agentic workflows and provide tooling to aid in their +creation and operation. [Documented in Frameworks](#frameworks-1) + +## Tools +Tools are implementations from useful third party libraries that are provided +to Agents in the user's project. AgentStack handles implementation details and +dependency management for these tools. [Documented in Tools](#tools-1) + +## Runtime +When a user initiates `agentstack run` the runtime is the environment that is +created to execute the tasks in the project. This includes the environment +variables, the tools that are available, and the agents that are available to +perform work. The [Public API](#public-api) is available to the user's project +at runtime. + +### Environment +The environment is the set of variables that are available to the project. The +user's `~/.env` file is loaded first, and then the project's `.env` file is loaded +to override any variables specific to the project. + + +# Public API +The public API is available inside of a project after declaring `import agentstack`. +We intentionally keep the exports sparse to maintain a usable module tree inside +the user's project, while only ever importing the single keyword. + +## `agentstack.conf.PATH` +`` This is the path to the current project directory. + +## `agentstack.tools[]` +`` This is a tool that is available to agents in the project. Tools +are implementations from useful third party libraries that are provided to Agents +in the user's project. Configuration, dependency management, and wrapper +implementations are provided by AgentStack. Tools implemented at this level are +framework-agnostic and expose useful implementations as `callable`s for agents to +use including docstrings and type hints for argument and return types. + +## `agentstack.get_framework()` +`` This is the name of the current framework ie. `"crewai"`. + +## `agentstack.get_inputs()` +`` This function returns the inputs for a project. These are the +variables that can be used to configure tasks in the project and are stored in the +`inputs.yaml` file inside the project directory. + +## `agentstack.get_tags()` +`` This function returns the tags for a project. These are strings +that help identify the workflow in an `AgentOps` observability context. + +# Core +These namespaces occupy the root of `agentstack` and are shared across all +project & frameworks. Methods from these products are generally candidates for +availability in the public API for use within a project. + + +## `agents` +Agents are the actual personalities that accomplish work. We provide tools for +interacting with the `agents.yaml` configuration file in this package. + +### `AgentConfig.__init__(name: str)` +`` Initialize an `AgentConfig` to read and modify `agents.yaml` in +the current project. + +### `agents.get_all_agent_names()` +`` This function returns a list of all the agent names in the project. + +### `agents.get_all_agents()` +`` This function returns a list of all the agents in the project. + + +## `tasks` +Tasks are the individual units of work that an Agent can perform. `agents` will +use the `tools` they have available to accomplish `tasks`. We provide tools for +interacting with the `tasks.yaml` configuration file in this package. + +### `TaskConfig.__init__(name: str)` +`` Initialize a `TaskConfig` to read and modify `tasks.yaml` in the +current project. + +### `tasks.get_all_task_names()` +`` This function returns a list of all the task names in the project. + +### `tasks.get_all_tasks()` +`` This function returns a list of all the tasks in the project. + + +## `inputs` +Inputs are variable data that can be used to configure `tasks`. Behind the scenes +`inputs` are interpolated into `task` prompts to determine their specialization. +We provide tools for interacting with the `inputs.yaml` configuration file in this +package. + +> TODO: Iterable inputs that can be used to generate `tasks` for multiple sequential runs. + +### `InputsConfig.__init__(name: str)` +`` Initialize an `InputsConfig` to read and modify `inputs.yaml` in +the current project. + +#### `InputsConfig.__getitem__(key: str)` +`` Instance method to get the value of an input from the `inputs.yaml` file. + +#### `InputsConfig.__setitem__(key: str, value: str)` +`` Instance method to set the value of an input in the `inputs.yaml` file. + +### `inputs.get_inputs()` +`` This function returns the inputs for a project. + +### `inputs.add_input_for_run(key: str, value: str)` +`` This function adds an input for a run to the `inputs.yaml` file. A run +is the current execution of the `agentstack` command (ie. `agentstack run --inputs-foo=bar`) +and inputs set here will not be saved to the project state. + + +## `templates` +Templates are configuration data stored in a JSON file that can be used to +generate an entire project. This is useful for bootstrapping a new project +which adheres to a common pattern or exporting your project to share. + +Templates are versioned, and each previous version provides a method to convert +it's content to the current version. + +> TODO: Templates are currently identified as `proj_templates` since they conflict +with the templates used by `generation`. Move existing templates to be part of +the generation package. + +### `TemplateConfig.from_template_name(name: str)` +`` This function returns a `TemplateConfig` object for a given +template name. + +### `TemplateConfig.from_file(path: Path)` +`` This function returns a `TemplateConfig` object for a given +template file path. + +### `TemplateConfig.from_url(url: str)` +`` This function returns a `TemplateConfig` object after loading +data from a URL. + +### `TemplateConfig.from_json(data: dict)` +`` This function returns a `TemplateConfig` object from a parsed +JSON object. + +### `TemplateConfig.write_to_file(filename: Path)` +`` Instance method to serialize and write the `TemplateConfig` data to a file. + +### `templates.get_all_template_paths()` +`` This function returns a list of all the template paths in the project. + +### `templates.get_all_template_names()` +`` This function returns a list of all the template names in the project. + +### `templates.get_all_templates()` +`` This function returns a list of all the templates in the +project as `TemplateConfig` objects. + + +## `conf` +Configuration data for the AgentStack application. This includes the path to the +current project directory and the name of the current framework. + +### `agentstack.json` +This is the configuration file for a user's project. It contains the project's +configuration and metadata. It can be read and modified directly by accessing +`conf.ConfigFile`. + +## `log` +AgentStack provides a robust logging interface for tracking and debugging +agentic workflows. Runs are separated into separate named files for easy tracking +and have standard conventions for outputs from different parts of the system +for parsing. + +## `serve` +Completed agents can be deployed to the AgentStack cloud service with a single +command. This provides a fast, secure, and publicly available interface for your +agentic workflows. + +> TODO: This is under development. + +## `cli` +The command line interface for `agentstack` is provided in this package. Outside +of `main.py` all logic relating to the command line interface resides here. + +> TODO: Code from other parts of the application should always throw exceptions +and leave the CLI to handle error messaging and control flow. + +## `packaging` +We manage the virtual environment and dependencies for tools that are added to +the project, in addition to keeping AgentStack up-to-date. + +## `update` +Auto-updates for AgentStack. + + +# Tools +> TODO: Tools should be documented here, or in sub-pages of documentation for +an overview of their usage. + +# Generation +AgentStack generates code for a number of frameworks. The generated code is +a starting point for a user's project and is meant to be modified and extended +to suit the user's needs. + +## `generation.agents` +This is code that creates and modifies the `agents` in a user's project. Agents +include code that is part of a framework-specific entrypoint file. + +> TODO: Rename `generation.agent_generation` to `generation.agents`. + +## `generation.tasks` +This is code that creates and modifies the `tasks` in a user's project. Tasks +include code that is part of a framework-specific entrypoint file. + +> TODO: Rename `generation.task_generation` to `generation.tasks`. + +## `generation.tools` +This is code that creates and modifies the `tools` in a user's project. Tools +are imported into the project and available for use by `agents`. + +> TODO: Rename `generation.tool_generation` to `generation.tools`. + +## `generation.files` +This is code that creates and modifies the `files` in a user's project. + +### `.env` +This is the environment file for a user's project. It contains the project's +environment variables. We dynamically modify this file to include relevant +variables to support `tools` that are used in the project. + +## `generation.asttools` +Since we're interacting with generated code, we provide a shared toolkit for +common AST operations. + + +# Frameworks +AgentStack generates code for a number of frameworks. The generated code is +a starting point for a user's project and is meant to be modified and extended +to suit the user's needs. The `frameworks` package contains code that adapts +general interactions with a framework into a specific implementation. + +## `frameworks.FrameworkModule` +This is the base protocol for all framework implementations– all implementations +must implement this protocol. + +## `frameworks.crewai` +This is the implementation for the CrewAI framework. CrewAI is a framework for +creating and managing AI agents. All code related specifically to CrewAI is +contained in this package. + +## `frameworks.langgraph` +> TODO Add [LangGraph](https://langchain-ai.github.io/langgraph/) as a framework. + +## `frameworks.openai_swarms` +> TODO: Add OpenAI Swarms as a framework. + +## `frameworks.agency_swarm` +> TODO: Add [VRSEN Agency Swarm](https://github.com/VRSEN/agency-swarm?tab=readme-ov-file) as a framework. + + +## contributing/how-to-contribute.mdx + +--- +title: 'How To Contribute' +description: 'Contribute your own Agent tool to the ecosystem' +--- + +First of all, __thank you__ for your interest in contributing to AgentStack! Even the smallest contributions help a _ton_. + +Our vision is to build the de facto CLI for quickly spinning up an AI Agent project. We want to be the [create-react-app](https://create-react-app.dev/) of agents. Our inspiration also includes the oh-so-convenient [Angular CLI](https://v17.angular.io/cli). + +## How to Help + +Grab an issue from the [issues tab](https://github.com/AgentOps-AI/AgentStack/issues)! Plenty are labelled "Good First Issue". Fork the repo and create a PR when ready! + +The best place to engage in conversation about your contribution is in the Issue chat or on our [Discord](https://discord.gg/JdWkh9tgTQ). + +## Setup + +1. Clone the repo +2. `poetry install` +3. `pip install -e .` + - This will install the CLI locally and in editable mode so you can use `agentstack ` to test your latest changes + +## Project Structure +TODO + +## Tests +HAHAHAHAHAHAHA good one (pls help 🥺) + +## templates/researcher.mdx + +--- +title: 'Researcher' +description: 'Research and report result from a query' +--- + +[View Template](https://github.com/AgentOps-AI/AgentStack/blob/main/agentstack/templates/proj_templates/research.json) + +```bash +agentstack init --template=research +``` + +# Purpose + +This agent will accept a query as a string, use Perplexity to research it. Another agent will take the data gathered and perform an analysis focused on answering the query. + +# Inputs + +`query` (str): the query for the agent to research and report on + +## templates/community.mdx + +--- +title: 'Community Templates' +description: 'Extending templating outside what is in the repo' +--- + +The easiest way to create your own templates right now is to host them online. + +```bash +agentstack init --template= +``` + +Much more community template support coming soon! + +## templates/templates.mdx + +--- +title: 'Templates' +description: 'Default AgentStack templates' +--- + +_Templates are a really powerful tool within AgentStack!_ + +# Start a new project with a template +Initializing a new project with AgentStack involves adding just one argument: +```bash +agentstack init --template= +``` + +Templates can also be passed as a URL. The URL should serve a valid json AgentStack template. + +## Start Easier +If you're struggling to get started with a project in AgentStack, a great way to better understand what to do is to start with a template! + +## Churn Faster +Many contractors that build agent systems have a tried and true prompting method that they want to replicate more quickly. +By creating your own template, you can quickly start projects that adhere to your design. + +## For Content Creators +Have a tutorial you've created using AgentStack? Make your project available as a quickstart with templates. + +# Built-In Templates + +The following templates are built into the AgentStack project. Template contributions are welcome! + + + + Research and report result from a query + + + Research a topic and create content on it + + + Inspect a project directory and improve it + + + +## templates/system_analyzer.mdx + +--- +title: 'System Analyzer' +description: 'Inspect a project directory and improve it' +--- + +[View Template](https://github.com/AgentOps-AI/AgentStack/blob/main/agentstack/templates/proj_templates/system_analyzer.json) + +```bash +agentstack init --template=system_analyzer +``` + +# Purpose + +This agent will accept a query as a string, use Perplexity to research it. Another agent will take the data gathered and perform an analysis focused on answering the query. + +# Inputs + +`system_path` (str): the absolute path to + +## templates/content_creator.mdx + +--- +title: 'Content Creator' +description: 'Research a topic and create content on it' +--- + +[View Template](https://github.com/AgentOps-AI/AgentStack/blob/main/agentstack/templates/proj_templates/content_creator.json) + +## cli-reference/cli.mdx + +--- +title: 'CLI Reference' +description: 'Everything to do with the CLI' +--- + +It all starts with calling +```bash +$ agentstack +``` + +### Shortcut Aliases +Many top-level AgentStack commands can be invoked using a single-letter prefix to save keystrokes. These are indicated +in the command's documentation here after a `|` character. Run `agentstack help` for the full list. + +### Global Flags +These flags work with all commands: + +`--debug` - Print a full traceback when an error is encountered. This also enables printing additional debug information +from within AgentStack useful for development and debugging. + +`--path=` - Set the working directory of the current AgentStack project. By default `agentstack` works inside of the +current directory and looks for an `agentstack.json` file there. By passing a path to this flag you can work on a project +from outside of it's directory. + +`--version` - Prints the current version and exits. + + +## `$ agentstack init` +This initializes a new AgentStack project. +```bash +agentstack init +``` + +`slug_name` is the name of your project, and will be created as a directory to initialize your project inside. When the +default arguments are passed, a starter project template will be used, which adds a single agent, a single task and +demonstrates the use of a tool. + +### Init Creates a Virtual Environment +AgentStack creates a new directory, initializes a new virtual environment, installs dependencies, and populates the project +structure. After `init` completes, `cd` into the directory, activate the virtual environment with `source .venv/bin/activate`. +Virtual environments and package management are handled by the `uv` package manager. + +### Initializing with the Wizard +You can pass the `--wizard` flag to `agentstack init` to use an interactive project configuration wizard. + +### Initializing from a Template +You can also pass a `--template=` argument to `agentstack init` which will pre-populate your project with functionality +from a built-in template, or one found on the internet. A `template_name` can be one of three identifiers: + +- A built-in AgentStack template (see the `templates/proj_templates` directory in the AgentStack repo for bundled templates). +- A template file from the internet; pass the full https URL of the template. +- A local template file; pass an absolute or relative path. + + +## `$ agentstack run` +This runs your AgentStack project. +```bash +agentstack run +``` + +Environment variables will be loaded from `~/.env` and from the `.env` file inside your project directory. Make sure you +have enabled your project's `venv` before executing to include all dependencies required. + +### Overriding Inputs +Your project defines Inputs which are used to customize the Agent and Task prompts for a specific task. In cases where +using the `inputs.yaml` file to populate data is not flexible enough, `run` can accept value overrides for all defined +inputs. Use `--input-=` to pass data which will only be used on this run. + +For example, if you have a key in your `inputs.yaml` file named `topic` and want to override it for this run, you would +use the following command: + +```bash +agentstack run --input-topic=Sports +``` + +### Running other project commands +By default, `run` will call the `main()` function inside your project's `main.py` file. You can pass alternate function +names to run with `--function=`. + + +## Generate +Code generation commands for automatically creating new agents or tasks. + +### `$ agentstack generate agent | agentstack g a` +Generate a new agent +- `agent_name` (required | str) - the name of the agent +- `--role` (optional | str) - Prompt parameter: The role of the agent +- `--goal` (optional | str) - Prompt parameter: The goal of the agent +- `--backstory` (optional | str) - Prompt parameter: The backstory of the agent +- `--llm` (optional | `/`) - Which model to use for this agent + +#### Default LLM +All arguments to generate a new Agent are optional. A default LLM can be configured in `agentstack.json`under the +`default_model` setting to populate a provider/model. If you are generating an agent in a project which does not have +a default model set, you will be prompted to configure one. + +#### Example +```bash Generate Agent +agentstack generate agent script_writer +``` + +### `$ agentstack generate task | agentstack g t` +Generate a new task +- `task_name` (required | str) - the name of the task +- `--description` (optional | str) - Prompt parameter: Explain the task in detail +- `--expected_output` (optional | str) - What is the expected output from the agent (ex: data in json format) +- `--agent` (optional | str) - The name of the agent of which to assign the task to (when using Crew in sequential mode) + +#### Example +```bash Generate Task +agentstack g t gen_script --description "Write a short film script about secret agents" +``` + +## Tools +Tools are what make AgentStack powerful. Adding and removing Tools from Agents is easy with this command. + +### `$ agentstack tools list | agentstack t l` +Lists all tools available in AgentStack. + +### `$ agentstack tools add | agentstack t a` +Shows an interactive interface for selecting which Tool to add and which Agents to add it to. + +#### Add a Tool to all Agents +When a tool_name is provided it will be made available to all Agents in the project. +```bash +$ agentstack tools add +``` + +#### Add a Tool to a single Agent +When an agent_name is provided, the tool will be made available to only that agent. +```bash +$ agentstack tools add --agent= +``` + +#### Add a Tool to multiple Agents +When a comma-separated list of Agents is passed, the tool will be made available to those agents. +```bash +$ agentstack tools add --agents=,, +``` + +### `$ agentstack tools remove ` +Removes a tool from all Agents in the project. + + +## Templates +Projects can be exported into a template to facilitate sharing configurations. Re-initialize a project from a template +with `agentstack init --template=`. + +### `$ agentstack export ` +The current project will be written to a JSON template at the provided filename. + +## `$ agentstack update` +Check for updates and allow the user to install the latest release of AgentStack. + +## `$ agentstack login` +Authenticate with [agentstack.sh](https://agentstack.sh) for hosted integrations. + + + +## essentials/agentops.mdx + +--- +title: '🖇️ AgentOps' +description: 'Using AgentOps makes the agent development process manageable' +--- + +## Overview + +AgentOps provides monitoring for agents in development and production. +It provides a dashboard for tracking agent performance, session replays, and custom reporting. + +Additionally, AgentOps provides session drilldowns for viewing Crew agent interactions, LLM calls, and tool usage in real-time. +This feature is useful for debugging and understanding how agents interact with users as well as other agents. + +![Overview](https://github.com/AgentOps-AI/agentops/raw/main/docs/images/external/app_screenshots/session-replay.png) + +## Features + +- **LLM Cost Management and Tracking**: Track spend with foundation model providers. +- **Replay Analytics**: Watch step-by-step agent execution graphs. +- **Recursive Thought Detection**: Identify when agents fall into infinite loops. +- **Custom Reporting**: Create custom analytics on agent performance. +- **Analytics Dashboard**: Monitor high-level statistics about agents in development and production. +- **Public Model Testing**: Test your agents against benchmarks and leaderboards. +- **Custom Tests**: Run your agents against domain-specific tests. +- **Time Travel Debugging**: Restart your sessions from checkpoints. +- **Compliance and Security**: Create audit logs and detect potential threats such as profanity and PII leaks. +- **Prompt Injection Detection**: Identify potential code injection and secret leaks. + +## Using AgentOps + +AgentOps is baked into AgentStack projects by default! You only need to add an API key to your .env file to unlock observability for free. + + + + Create a user API key here: [Create API Key](https://app.agentops.ai/account) + + + Add your API key to your environment variables: + ```bash + AGENTOPS_API_KEY= + ``` + + + +## Further Information + +To get started, create an [AgentOps account](https://agentops.ai/?=crew). + +For feature requests or bug reports, please reach out to the AgentOps team on the [AgentOps Repo](https://github.com/AgentOps-AI/agentops). + +## essentials/generating-tasks.mdx + +--- +title: 'Generating Tasks' +description: 'CLI command to add a task to your project' +--- + +To generate a new task for your project, run: + +```bash +agentstack generate task +``` + +This command will modify two files, `crew.py` and `agents.yaml`. + +## crew.py + +This is the file that declares each of your agents and tasks. It's the core of your AgentStack project with Crew. + + +## agents.yaml + +This is your prompt file. Any prompt engineering is abstracted to here for non-technical ease. + +Each task has two prompt params: +- Description +- Expected Output + +And one configuration param: +- Agent - If operating in Sequential mode, this tells the Crew which agent should accomplish the task + +## essentials/generating-agents.mdx + +--- +title: 'Generating Agents' +description: 'CLI command to add an agent to your project' +--- + +To generate a new agent for your project, run: + +```bash +agentstack generate agent +``` + +This command will modify two files, `crew.py` and `agents.yaml`. + +## crew.py + +This is the file that declares each of your agents and tasks. It's the core of your AgentStack project with Crew. + + +## agents.yaml + +This is your prompt file. Any prompt engineering is abstracted to here for non-technical ease. + +Each agent has three prompt params: +- Role +- Goal +- Backstory + +And one configuration param: +- LLM - This value tells crew which model to use for this specific agent. It must be in `/` format + + Ex: `openai/gpt-4o` +