BRUTE.AI

The whole BRUTE-AI family in one page — the self-prompting ChatCompletions harness, the Hugging Face Inference harness, the retro terminal ML page and the reverse-proxy pitch. Four Spaces are now one, and this page runs entirely in your browser: no server, no CPU spent on the host.

BRUTE.AI — the self-prompting harness

The original page was a single client-side chat loop: it POSTs to a user-supplied endpoint with a user-supplied API key, streams the reply into a terminal, and keeps re-prompting itself up to MAX_RESPONSES = 250. The task it is given is a JavaScript-injection challenge against its own display.

Protocol. Every turn sends [INST] : {message} [/INST] LAST AI RESPONSE: {terminal}. If a reply contains [EXEC]…[/EXEC], the harness injects that code with eval()-style script insertion. If the injection text appears back in the terminal, it was not executed — that echo is the feedback signal to try another method.

The challenge prompt (from the original)


    
Why this page cannot run the loop itself. The original harness used fetch(..., {mode: "no-cors"}), so the browser could send the request but could not read the response — the loop was blind to anything a real cross-origin LLM endpoint returned. Reading a reply requires a same-origin relay: a small server that forwards your request and returns the body. That relay is the CPU suite — brute-suite — and this static page keeps the family readable without one.

Endpoint configuration carried over from the original

endpoint URL https://chat.tune.app/api/chat/completions body {"body":{"temperature":0.5,"messages":[{"role":"system","content":"You are TuneChat"}, {"role":"user","content":"Who are you"}],"model":"tune-blob","stream":true, "max_tokens":1000}} auth header Authorization: <your API key> fetch mode no-cors (responses unreadable — the relay above is the fix) self-prompt [INST] : {brute_ai_self_prompting_command} [/INST] exec tag [EXEC]javascript here[/EXEC] response cap 250 turns

BRUTE.AI (public) — Hugging Face Inference harness

The second harness was the same loop pointed at Hugging Face instead of TuneChat, using a bearer token and a generated_text response field, with a 10-second retry while a model cold-starts.

endpoint URL https://api-inference.huggingface.co/models/mistralai/Mistral-Nemo-Instruct-2407 body {"inputs":"You are Mistral Instruct.","parameters":{"temperature":0.2,"max_length":512}} auth header Authorization: Bearer <HF token> response field data.generated_text retry every 10000 ms while the model reports "currently loading" response cap 250 turns

Unlike the TuneChat version this one used a normal CORS fetch, so it could read its responses — that is why the two harnesses behaved so differently in practice, and why the relay is only needed for the cross-origin case.

BRUTEML — retro terminal ML page

This page never ran as published, and is shown here as its UI only. The original index.html loaded <script src="index.js"> — a file that was never committed to the Space — and imported @xenova/transformers with a bare module specifier, which no browser can resolve without a bundler or a CDN. So there was no model, no inference and no progress to report: only the terminal and five progress bars. Reproducing that faithfully is the honest port; inventing a model would not be.
$ waiting for index.js (never present in the Space)_
Network Progress:
Filesystem Progress:
Other Progress:
Model 1 Progress:
Model 2 Progress:

The five bars are the original's DOM, left at zero because nothing ever drove them. The original styling (black background, #0f0 monospace, blinking cursor) is preserved.

Reverse Proxy with BRUTE-AI

“Unlock the power of Artificial General Intelligence with BRUTE-AI!” — the original pitch page, whose real content was a small Flask relay:

POST /v1/completions?url=<endpoint> data = request.get_json() response = requests.post(url_param, headers={'Content-Type':'application/json'}, json=data) return jsonify(response.json()), response.status_code, response.headers.items()

It extracts a url GET parameter and forwards the request body to it unchanged — a server-side relay, which is exactly the missing piece the BRUTE.AI harness needs to read a cross-origin reply. A static page cannot do this: forwarding a request is server work, and it is why brute-suite holds a CPU slot for it. The page itself was 23 lines of Streamlit wrapping this snippet.

Family — four Spaces, one page

SpaceOriginal kindWhat it actually wasNow
BRUTE-AIstaticclient-side self-prompting harness (no-cors fetch)tab 1
BRUTEAI-PUBLICstaticsame loop against HF Inferencetab 2
BRUTEMLstaticterminal UI with a missing index.jstab 3
REVERSE_PROXY_BRUTE-AIstreamlitFlask relay + pitchtab 4 (relay runs in brute-suite)

None of the four required CPU as published: three were already static and the fourth was a 23-line pitch page around a relay snippet. Serving them as one page frees the three extra Spaces.