{"id":22767999,"url":"https://github.com/dreadnode/robopages","last_synced_at":"2025-04-28T16:25:47.381Z","repository":{"id":260382029,"uuid":"874843587","full_name":"dreadnode/robopages","owner":"dreadnode","description":"A YAML based format for describing tools to LLMs, like man pages but for robots!","archived":false,"fork":false,"pushed_at":"2025-04-10T13:08:49.000Z","size":177,"stargazers_count":68,"open_issues_count":0,"forks_count":4,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-10T14:47:17.975Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","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":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2024-10-18T15:03:37.000Z","updated_at":"2025-04-10T13:08:51.000Z","dependencies_parsed_at":"2025-01-25T02:18:45.649Z","dependency_job_id":"d9d23413-0949-43de-965e-3d351b6f0e37","html_url":"https://github.com/dreadnode/robopages","commit_stats":null,"previous_names":["dreadnode/robopages"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Frobopages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Frobopages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Frobopages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Frobopages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dreadnode","download_url":"https://codeload.github.com/dreadnode/robopages/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251344206,"owners_count":21574508,"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","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.097Z","updated_at":"2025-04-28T16:25:47.360Z","avatar_url":"https://github.com/dreadnode.png","language":"Dockerfile","readme":"# Robopages\n\nRobopages are YAML based files 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 function calling server](https://github.com/dreadnode/robopages-cli), 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\nLike [man pages](https://en.wikipedia.org/wiki/Man_page) but for robots!\n\n## Usage\n\n1. Install the robopages server by following the instructions in the [robopages-cli](https://github.com/dreadnode/robopages-cli) repository.\n2. [Download this repository](https://github.com/dreadnode/robopages/archive/refs/heads/main.zip) and copy it to your system `~/.robopages/` folder (or run the `robopages install` command).\n3. Start the server by running `robopages serve`.\n\nYour tools are now available at `http://localhost:8080/` for any LLM to use. Refer to the [robopages-cli](https://github.com/dreadnode/robopages-cli) repository for usage information and examples.\n\n## Syntax\n\nA robopage is a YAML file describing one or more tools that can be used by an LLM as functions. In its simplest form, a robopage is a YAML file with a `description` and a `functions` section referencing a command line tool:\n\n```yaml\ndescription: You can use this for a description.\n\n# declare one or more functions per page\nfunctions:\n  # the function name\n  example_function_name:\n    description: This is an example function describing a command line.\n    # function parameters\n    parameters:\n      # the parameter name\n      foo:\n        # the parameter type\n        type: string\n        description: An example paramter named foo.\n        # whether the parameter is required, default to true\n        # required: false\n        # optional examples of valid values\n        examples:\n        - bar\n        - baz\n\n    # the command line to execute\n    cmdline:\n    - echo\n    # valid syntax for parameters interpolation:\n    #   ${parameter_name}\n    #   ${parameter_name or default_value}\n    - ${foo}\n```\n\nIt is possible to declare a container section, in which case the command line will be executed in the context of the container if the application doesn't exist in $PATH on the host system (note that in the following example the `force` option is set to true in order to ensure that the container image is used instead):\n\n```yaml\ndescription: An example using a docker image.\n\n# declare one or more functions per page\nfunctions:\n  # the function name\n  http_get:\n    description: Fetch a page from the web.\n    # function parameters\n    parameters:\n      # the parameter name\n      url:\n        # the parameter type\n        type: string\n        description: The URL of the page to fetch.\n        examples:\n        - https://example.com\n\n    # the container to use\n    container:\n      # normally, if the binary specificed in cmdline is found in $PATH,\n      # it will be used instead of the container binary\n      # by setting force to true, the container image will be used instead\n      force: true\n      # the container image to use\n      image: alpine/curl\n      # optional volumes to mount\n      # volumes:\n      # - /var/run/docker.sock:/var/run/docker.sock\n      # optional container arguments\n      args:\n        # share the same network as the host\n        - --net=host\n\n    # the command line to execute\n    cmdline:\n    - curl\n    - -s\n    - -L\n    - ${url}\n```\n\nLocal Dockerfiles can be used as well (use the `${cwd}` variable to refer to the directory of the robopage.yml file):\n\n```yaml\ndescription: An example using a docker container built locally.\n\n# declare one or more functions per page\nfunctions:\n  # the function name\n  nmap_tcp_ports_syn_scan:\n    description: Scan one or more targets for the list of common TCP ports using a TCP SYN scan.\n    # function parameters\n    parameters:\n      # the parameter name\n      target:\n        # the parameter type\n        type: string\n        description: The IP address, CIDR, range or hostname to scan.\n        # optional examples of valid values\n        examples:\n          - 192.168.1.1\n          - 192.168.1.0/24\n          - scanme.nmap.org\n\n    # the container to use\n    container:\n      # normally, if the binary specificed in cmdline is found in $PATH,\n      # it will be used instead of the container binary\n      # by setting force to true, the container image will be used instead\n      force: true\n      # specify how to build the container image\n      build: \n        # path to the Dockerfile, ${cwd} is the directory of the robopage.yml file\n        path: ${cwd}/nmap.Dockerfile\n        # how to tag the image\n        name: nmap_local\n\n      # optional volumes to mount\n      # volumes:\n      # - /var/run/docker.sock:/var/run/docker.sock\n      # optional container arguments\n      args:\n        # share the same network as the host\n        - --net=host\n\n    # the command line to execute\n    cmdline:\n      # sudo is automatically removed if running as container\n      - sudo\n      - nmap\n      - -sS\n      - -Pn\n      - -A\n      - ${target}\n```\n\nIf you don't want to use containers and need to specify different platform specific command lines:\n\ndescription: Function to print exported and imported symbols from a binary.\n\n```yaml\nfunctions:\n  print_exported_symbols_in_file:\n    description: Find the exported symbols in an executable file or a library.\n    parameters:\n      file_path:\n        type: string\n        description: The path to the file to scan.\n        examples:\n          - /path/to/binary\n          - /Applications/Firefox.app/Contents/MacOS/firefox\n\n    # platform specific command lines\n    # https://doc.rust-lang.org/std/env/consts/constant.OS.html\n    platforms:\n      macos:\n        - nm\n        - -gU\n        - ${file_path}\n\n      linux:\n        - readelf\n        - -Ws\n        - --dyn-syms\n        - ${file_path}\n```","funding_links":[],"categories":["Dockerfile"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreadnode%2Frobopages","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdreadnode%2Frobopages","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreadnode%2Frobopages/lists"}