{"id":22768000,"url":"https://github.com/dreadnode/robopages-cli","last_synced_at":"2025-08-25T05:10:20.925Z","repository":{"id":260301478,"uuid":"871688911","full_name":"dreadnode/robopages-cli","owner":"dreadnode","description":"CLI and API server for https://github.com/dreadnode/robopages","archived":false,"fork":false,"pushed_at":"2025-08-20T00:28:58.000Z","size":456,"stargazers_count":34,"open_issues_count":5,"forks_count":4,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-08-20T02:33:51.706Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dreadnode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-12T16:59:54.000Z","updated_at":"2025-08-20T00:29:00.000Z","dependencies_parsed_at":"2025-03-28T12:24:54.955Z","dependency_job_id":"62857101-13a9-4714-848c-b6b71a6e6891","html_url":"https://github.com/dreadnode/robopages-cli","commit_stats":null,"previous_names":["dreadnode/robopages-cli"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/dreadnode/robopages-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Frobopages-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Frobopages-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Frobopages-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Frobopages-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dreadnode","download_url":"https://codeload.github.com/dreadnode/robopages-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Frobopages-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272008766,"owners_count":24857658,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-25T02:00:12.092Z","response_time":1107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-11T14:09:30.521Z","updated_at":"2025-08-25T05:10:20.909Z","avatar_url":"https://github.com/dreadnode.png","language":"Rust","readme":"# Robopages Server\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg\n  src=\"https://d1lppblt9t2x15.cloudfront.net/logos/5714928f3cdc09503751580cffbe8d02.png\"\n  alt=\"Logo\"\n  align=\"center\"\n  width=\"144px\"\n  height=\"144px\"\n/\u003e\n\n\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/dreadnode/robopages-cli/releases/latest\"\u003e\u003cimg alt=\"Release\" src=\"https://img.shields.io/github/release/dreadnode/robopages-cli.svg?style=fl_pathat-square\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://crates.io/crates/robopages\"\u003e\u003cimg alt=\"Crate\" src=\"https://img.shields.io/crates/v/robopages.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/dreadnode/robopages\"\u003e\u003cimg alt=\"Docker Hub\" src=\"https://img.shields.io/docker/v/dreadnode/robopages?logo=docker\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://rust-reportcard.xuri.me/report/github.com/dreadnode/robopages-cli\"\u003e\u003cimg alt=\"Rust Report\" src=\"https://rust-reportcard.xuri.me/badge/github.com/dreadnode/robopages-cli\"\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg alt=\"GitHub Actions Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/dreadnode/robopages-cli/test.yml\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/dreadnode/robopages-cli/blob/master/LICENSE.md\"\u003e\u003cimg alt=\"Software License\" src=\"https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n**CLI and API server for [robopages](https://github.com/dreadnode/robopages)**\n\n\u003c/div\u003e\n\n# Table of Contents\n\n- [Robopages Server](#robopages-server)\n  - [CLI and API server for robopages](#cli-and-api-server-for-robopages)\n- [Table of Contents](#table-of-contents)\n  - [Install with Cargo](#install-with-cargo)\n  - [Pull from Docker Hub](#pull-from-docker-hub)\n  - [Build Docker image](#build-docker-image)\n  - [Note about Docker](#note-about-docker)\n  - [Build from source](#build-from-source)\n  - [Usage](#usage)\n    - [CLI](#cli)\n      - [SSH](#ssh)\n    - [Using with LLMs](#using-with-llms)\n  - [Docker Container Failures](#docker-container-failures)\n\n\n[Robopages are YAML based files](https://github.com/dreadnode/robopages) for describing tools to large language models (LLMs). They simplify the process of defining and using external tools in LLM-powered applications. By leveraging the `robopages-cli` function calling server, developers can avoid the tedious task of manually writing JSON declarations for each tool. This approach streamlines tool integration, improves maintainability, and allows for more dynamic and flexible interactions between LLMs and external utilities.\n\nPages are loaded by default from the `~/.robopages/` directory (or any folder set in the `ROBOPAGES_PATH` environment variable), see the `https://github.com/dreadnode/robopages` repository for examples.\n\n## Install with Cargo\n\nThis is the recommended way to install and use the tool:\n\n```bash\ncargo install robopages\n```\n\n## Pull from Docker Hub\n\n```bash\ndocker pull dreadnode/robopages:latest\n```\n\n## Build Docker image\n\nTo build your own Docker image for the tool, run:\n\n```bash\ndocker build . -t robopages\n```\n\nOptionally, you can create a bash alias like so:\n\n`alias robopages='docker run -v /var/run/docker.sock:/var/run/docker.sock -v ~/.robopages:/root/.robopages -p 8000:8000 robopages'`\n\n## Note about Docker\n\nIf you are using `robopages` inside a container, make sure to share the docker socket from the host machine with the container:\n\n```bash\ndocker run -it \\\n  # allow the container itself to instrument docker on the host \\\n  -v/var/run/docker.sock:/var/run/docker.sock\n  # share your robopages\n  -v$HOME/.robopages:/root/.robopages \\\n  # the rest of the command line\n  robopages view\n```\n\n## Build from source\n\nAlternatively you can build the project from source, in which case you'll need to have Rust and Cargo [installed on your system](https://rustup.rs/) and clone this repository.\n\nTo build the project:\n\n```bash\ncargo build --release\n```\n\nThe compiled binary will be available in the `target/release` directory. You can run it directly or add it to your system's PATH:\n\n```bash\n# Run directly\n./target/release/robopages\n\n# Or, copy to a directory in your PATH (e.g., /usr/local/bin)\nsudo cp target/release/robopages /usr/local/bin/\n```\n\n## Usage\n\nThis project consists of a CLI for creating, viewing and serving robopages as a REST API.\n\n### CLI\n\nInstall robopages:\n\n```bash\n# install https://github.com/dreadnode/robopages to ~/.robopages/\nrobopages install\n\n# install a custom repository\nrobopages install --source user/repo\n\n# install from a local archive\nrobopages install --source /path/to/archive.zip\n```\n\nView installed robopages:\n\n```bash\nrobopages view\n```\n\nCreate a robopage with the preferred template:\n\n```bash\n# create with the basic template, will run the command in the current shell\nrobopages create --name my_first_page.yml --template basic\n\n# create with the docker-image template, will use a docker image to run the command\nrobopages create --name my_first_page.yml --template docker-image\n\n# create with the docker-build template, will build a docker image to run the command\nrobopages create --name my_first_page.yml --template docker-build\n```\n\nValidate one or more files:\n\n```bash\n# validate all pages in  ~/.robopages\nrobopages validate\n\n# validate a specific page\nrobopages validate --path my_first_page.yml\n\n# do not attempt to pull or build containers\nrobopages validate --skip-docker\n```\n\nStart the REST API:\n\n\u003e [!IMPORTANT]\n\u003e While strict CORS rules are enforced by default, no authentication layer is provided. It is highly recommended to never bind this API to addresses other than localhost (as per default configuration).\n\n```bash\n# this will pre build and pull all containers\nrobopages serve\n\n# this will build or pull containers on demand\nrobopages serve --lazy\n```\n\nExecute a function manually without user interaction:\n\n```bash\nrobopages run --function nikto_scan --auto\n```\n\nYou can also define variables to be used in the function call:\n\n```bash\nrobopages run -F httpx_tech_detect -A --define target=www.example.com\n```\n\nRepeat for multiple variables:\n\n```bash\nrobopages run -F function_name -A -D target=www.example.com -D foo=bar\n```\n\n#### SSH\n\nThe `run` and `serve` commands support an optional SSH connection string. If provided, commands will be executed over SSH on the given host.\n\n```bash\nrobopages serve --ssh user@host:port --ssh-key ~/.ssh/id_ed25519\n```\n\n\u003e [!IMPORTANT]\n\u003e * Setting a SSH connection string will override any container configuration.\n\u003e * If the function requires sudo, the remote host is expected to have passwordless sudo access.\n\n### Using with LLMs\n\nThe examples folder contains integration examples for [Rigging](/examples/rigging_example.py), [OpenAI](/examples/openai_example.py), [Groq](/examples/groq_example.py), [OLLAMA](/examples/ollama_example.py) and [Nerve](/examples/nerve.md).\n\n## Docker Container Failures\n\nIf a function's required Docker container fails to pull (e.g., due to missing permissions or non-existent image), the function will fail to execute. To resolve this:\n\n1. Either gain access to the required container, or\n2. Remove the robopage file that references the inaccessible container\n\nThis behavior is intentional to prevent functions from executing without their required runtime dependencies.\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreadnode%2Frobopages-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdreadnode%2Frobopages-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreadnode%2Frobopages-cli/lists"}