# Internet — an integration for Buff

> Search and read public pages from your perimeter, within the admin’s allow and block lists. DuckDuckGo without a key, your own SearXNG, Brave with a key.

[Marketplace](https://buff.systems/en/marketplace) Internet

# Internet

Internet · publisher buff · version 1.0.3

Search and read public pages from your perimeter, within the admin’s allow and block lists. DuckDuckGo without a key, your own SearXNG, Brave with a key.

[Download the connector](https://buff.systems/en/downloads) [How to install](https://buff.systems/en/marketplace/web#usage) 2 of 2 tools only read

- An answer in Buff found on the internet through the connector: the model found a page, read it and answered from it.
- The setup form: the engine as a choice, the allow and block lists, content types, stop words.
- The connection is live: two tools, both read only; it goes only to search engines and to sites on the allow list.
- The connection check says which engine answered and how many results it returned.
- What the integration will get is written on its card in the connector’s catalogue.

Click a screenshot to open it in full. All screenshots are from a working installation.

## Overview

The task, the code and the knowledge base are what the team has. The internet is what it does not have: a library’s documentation, an analysis of an error, a standard, someone else’s README. The integration gives the model two tools — find and read — and places them not on our backend but in your connector: the model names the addresses, and your administrator sets the limits. The model’s own page fetching is turned off everywhere, so without this integration it has no internet at all.

Read before installing: what you are risking

The model names the addresses, and they go to the chosen search engine and to the sites — into their logs. A page it reads enters the model’s context, and a site may contain text aimed at the model rather than at a person: the allow and block lists narrow this risk but do not remove it. DuckDuckGo works through an unofficial endpoint and under load may answer with an “are you a robot” check — the integration will say so plainly, and you switch the engine to SearXNG or Brave. The internal network is always closed and no setting opens it, but the model will read everything the lists allow on the public internet.

## Use cases

The situations it is installed for.

- ### Documentation of a library that is not in the project The model is writing a handler for a new SDK version, but the project has only the old one. From memory it knows last year’s API and writes to it with confidence. Result. It searches for the release notes with the tool, reads the page and writes to the current signature — with a link to the source in the answer. The administrator’s lists let it reach only documentation sites.
- ### An error someone has already worked out The build log has a line nobody on the team has seen. Usually someone copies it into a search engine and reads three tabs. Result. The model searches by the error text, reads a suitable analysis and explains the cause as it applies to your code. Every call is in the connection log: you can see what was searched for and what was read.
- ### The standard the task refers to The task requires “per the RFC” or “as in the payments specification”. The specification is a public page a hundred screens long. Result. The page reaches the model whole, as text with headings and tables, without truncation; it finds the right section itself. Internal addresses stay closed: even a redirect from a public site into your network ends in a refusal.
- ### A team with a closed perimeter Security allows the model internet access only by a list: three vendors’ documentation and nothing else. A firewall cannot express such a rule at the level of a model. Result. The administrator fills in the allow list — three domains with their subdomains. The model does not see search results from other sites at all, and an attempt to read something outside the list comes back to it as a refusal with a reason.

## Examples

What to write and what comes back. How the bot is addressed is set in the connection settings — here it is “@buff”.

1. What is the new parameter of the HTTP client in the latest release of library X called? Look it up on the internet. a question in the Buff app tool: `web_search + web_fetch` In release 3.2 the client got a connect\_timeout parameter, separate from the general timeout; the default is 10 seconds. Source: the changelog page at docs.example.com/changelog/3.2.
2. Read https://docs.example.com/api/errors and tell me what code E417 means. a question in the app or a comment in the tracker tool: `web_fetch` E417 is “resource version conflict”: the request carried an outdated ETag. The advice is to re-read the resource and retry with the new one. The page was read in full; the answer is based on the “Error codes” section.
3. See what pastebin.com says about our token. a question in the app tool: `web_search` pastebin.com is on the connector administrator’s block list: results from it are not shown, and I cannot read a page from there. I can search other sites.

## What it does

### Searches with the chosen engine

DuckDuckGo works right after installation, without a key or registration — through its unofficial HTML endpoint, and if that endpoint asks to “confirm you are human”, the integration says so plainly instead of “nothing found”. SearXNG is your own meta search inside the perimeter, stable and private. The Brave Search API is a commercial engine with a key; the key is stored in the connector and goes only to Brave.

### Reads the whole page, as text

HTML reaches the model with headings, lists, tables and link addresses; JSON arrives formatted. Nothing is cut off: a long specification arrives long. A page with an error comes back with its code instead of being hidden.

### The administrator’s lists — in both search and reading

The allow list, when filled in, is the only place the model goes; the block list applies when the allow list is empty. An entry is a domain without a scheme, subdomains included, the path optional, \`\*\` one path segment: example.com, docs.example.com, example.com/blog, example.com/\*/articles. Search results from forbidden sites are hidden, and the answer says how many.

### Content types and stop words

What may be given to the model — by the response’s Content-Type header, before the body is read: text/html, application/json, text/\*. Stop words reject a search query or an address on the spot, without a single request going out.

### The internal network is always closed

Before each request the connector resolves the site name and refuses if even one address is not public: loopback, private ranges, link-local with cloud metadata, CGNAT. The connection goes exactly to the verified address. Each redirect is checked, credentials are never sent to sites, only http and https. This is not a setting — it is a rule.

### Every call in plain view

Search and reading are connector tools like those of any integration: they are in the connection log and in the platform’s accounting together with the reason for a refusal, if there was one. Both only read, so they are available wherever the model is given connector tools.

## How to use it

Everything happens on the machine where the connector runs. At no step do you need to open access to your network from outside.

1. Step 1 ### Installation takes one click Open the “Marketplace” section on the connector’s local page. Before installing you can see what the integration will get: the public internet within your lists, the engine addresses, a key only for Brave. **Connector** ← scroll the frame → The access limits are written on the catalogue card.
2. Step 2 ### Setup: the engine and the lists The default engine is DuckDuckGo; the engine addresses are already filled in. For SearXNG enter the address of your instance (the json format must be enabled in its settings.yml), for Brave the key. A sensible starting point for a team is an allow list of your technologies’ documentation; the open internet is for those who really need it. **Connector** ← scroll the frame → The setup form: the engine is chosen, the lists are separated by commas.
3. Step 3 ### The connection check says that the engine responds The “Check connection” button runs one search with the chosen engine and names the engine and the number of results — or the reason it did not answer, including DuckDuckGo asking you to confirm you are human. **Connector** ← scroll the frame → The connection check: the engine and the number of results.
4. Step 4 ### The same from the command line Installing without a GUI is an equal option: \`connector install web\`, then \`connector instance add web --config engine=duckduckgo --config deny=pastebin.com\`.

## Access limits

The connector shows the same on your machine before installation. The list comes from the signed catalogue, not written here by hand.

Goes out to

the public internet — to addresses the model names, within your allow and block lists; the internal network is always closed — plus the addresses from the fields `duckduckgo_base` `searxng_base` `brave_base`

Credentials

brave — the values stay in the connector, the integration does not see them

Webhooks

does not accept

| Tool | What it does | Access |
| --- | --- | --- |
| web\_search | Search the internet — when the answer depends on recent or external information that is not in the project or the knowledge base | read only |
| web\_fetch | Read a page by its address — documentation, an article, an API response — when the address is known or found by search | read only |

The integration runs as a separate process under its own operating system user: it does not see the connector’s key, does not read the files of other connections and cannot reach the network past the connector. More in the [security section](https://buff.systems/en/security).

## Requirements

- Connector 0.7 or later: the web rule and the public-address check were added in it; an older connector will refuse to install the integration and name both versions.
- Network access from the connector’s machine to the outside — to the search engine and to the sites on your lists. The integration does not go into your network, and nothing needs to be opened for it.
- For Brave, a Brave Search API key; for SearXNG, your own instance with the json format enabled. DuckDuckGo needs no key.

## Questions

- **Why not the model’s built-in page fetching?**: It exists, and we have turned it off — everywhere. None of your lists applies on our backend, and every one of them applies on the connector. Without the integration installed the model has no internet at all; with it, exactly as much as the administrator allows.
- **Can the model get into our internal network?**: No, and that is not a setting. The site name is resolved before each request; even one non-public address means a refusal; the connection goes exactly to the verified address; every redirect is checked again; no credentials are attached to such a request. The connector’s ordinary connections go into private networks on purpose — for the internet this is forbidden.
- **What do the search engine and the sites see?**: The queries the model formulated and the addresses it reads — from your connector’s address, with the connector’s User-Agent. Neither your credentials nor the project code go there. If that is unacceptable, SearXNG inside the perimeter and an allow list narrow the circle to the sites you choose.
- **DuckDuckGo has stopped answering — what do I do?**: It answered with an “are you a robot” check; this happens with its unofficial endpoint under load. The integration says so plainly. Switch the engine in the connection settings to SearXNG or Brave — the form, the lists and the tools stay the same.
- **How much does it cost?**: Like any connector tool: a page that is read enters the model’s context and is paid for as its input. Nothing is cached or indexed in advance — what was needed for the answer is read. Brave charges for requests on its side, against your key.
- **What about PDFs and images?**: Not in this version: HTML, text and JSON. A response with another content type is rejected with a reason, and the model tells the person what it is.

At a glance

- **Version**: 1.0.3
- **Publisher**: buff
- **Updated**: 2026-10-05
- **Size**: 29 KB
- **Tools**: 2, 2 read only
- **Credentials**: brave
- **Webhooks**: does not accept
- **Platforms**: linux-x86\_64, linux-aarch64

[Connector documentation](https://buff.systems/en/docs/connector) [How it works from an information security standpoint](https://buff.systems/en/security) [Ask a question about the integration](https://buff.systems/en/contact)

On this page

- [Overview](https://buff.systems/en/marketplace/web#overview)
- [Use cases](https://buff.systems/en/marketplace/web#use-cases)
- [Examples](https://buff.systems/en/marketplace/web#examples)
- [What it does](https://buff.systems/en/marketplace/web#abilities)
- [How to use it](https://buff.systems/en/marketplace/web#usage)
- [Access limits](https://buff.systems/en/marketplace/web#access)
- [Requirements](https://buff.systems/en/marketplace/web#requirements)
- [Questions](https://buff.systems/en/marketplace/web#faq)

Next

## Connect Internet

Install the connector in your network, open its local page and install the integration from the catalogue. Nothing needs to be rebuilt.

[Download the connector](https://buff.systems/app) [Write to us](mailto:info@buff.systems)

Companies and sole traders can pay by bank transfer and receive closing documents
