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 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:
+
+
+
+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
+ 
+
+
+ Build a simple web scraper agent
+ 
+
+
+
+## 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
+ 
+
+
+
+## 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.
+
+
+
+## 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`
+