test_caracat_code / README.md
Chinook416's picture
Sync from GitHub via hub-sync
61d8daa verified
|
Raw
History Blame Contribute Delete
5.8 kB
metadata
title: Caracat Code
emoji: πŸˆβ€β¬›
colorFrom: green
colorTo: gray
sdk: static
app_file: index.html
pinned: false
license: apache-2.0
short_description: A coding assistant based on Qwen3-Coder-Next.

πŸˆβ€β¬› Caracat Code

Caracat Code is an AI coding assistant based on Qwen3-Coder-Next by Qwen.

This Space is the hosted interface, served as a static page. There is no server here β€” the page in your browser talks to your provider directly.

No Caracat weights have been trained yet. The model answering here is the base model; what makes it Caracat Code is the personality and the tooling around it. See the model repository for the current state.

Setting it up

  1. Open Settings on the page. The Endpoint starts on Hugging Face's OpenAI-compatible router, https://router.huggingface.co/v1.
  2. Paste an access token into API key. A Hugging Face token with the Inference Providers permission works here. It is stored in your browser and sent only to the endpoint above.
  3. Pick a model from the dropdown. The list comes from the endpoint.

There is no Space secret to configure, because a static Space runs no code that could hold one.

If the model list stays empty and the browser console mentions CORS, that endpoint does not accept requests from a web page, and no setting here can change that β€” a browser may only call an API that opts in. Two ways on:

  • use an endpoint that does permit browser calls, entered in the same field; or
  • put a small proxy of your own in front, which is also how the key stops living in the browser (see below).

Where the key lives, plainly

In your browser, on your device. Not in this repository, not in the page's source, and not on any server of ours β€” but it is on the device, in the browser's local storage, until you press Forget the key on this device.

Three things follow from that, and none of them are optional:

  • Keep this Space private unless you mean to share the page. It is the page that is shared, never your key β€” but a private Space is one less thing to think about.
  • Give the key a spending limit at your provider. Then the worst case is bounded rather than open-ended.
  • A key is revocable. If it may have been seen, revoke it and make a new one. It is worth nothing except the credit behind it.

If you would rather the key never touched the browser at all, point the Endpoint field at a small proxy of your own that holds the key and forwards the request. The page sends no Authorization header when the endpoint is not the default provider, so such a proxy works without any change here.

What this Space can and cannot do

Chat, with the personality applied βœ…
Choose from your provider's models βœ…
Compare two models side by side βœ…
Attach files from your device βœ… β€” through the browser's file picker
Keep conversations βœ… β€” in this browser, not on a server
Read GitHub repositories βœ… β€” public ones, no token needed
Propose changes as pull requests βœ… β€” with a GitHub token, and only on a press
Browse a project directory ❌ β€” that needs a server with your files on it
Run code ❌ β€” that needs a server too
Fetch web pages ❌ β€” a browser is not allowed to read other sites

The four missing pieces are not switched off; there is simply nothing here that could do them. For those, run the interface on your own machine:

export CARACAT_API_KEY='...'
python scripts/serve_interface.py --project-dir ~/your-project

Then the key stays in that server process and never reaches the page, the project directory is readable, and Python can be run under limits.

Working with GitHub

Add repositories in Settings as owner/name, one per line. Public ones need no token, and each becomes its own section in the sidebar β€” attach a file and it carries the repository in its name, so a conversation about two projects stays clear about which file is which.

This works here, unlike fetching an ordinary web page, because GitHub is one of the few APIs that permits a web page to call it.

To let it propose changes, add a GitHub token in Settings. Make it fine-grained, limited to exactly those repositories, with Contents and Pull requests on read+write and nothing else. Then a block the model marks with a file gets a Propose… button:

  • pressing it creates a branch and opens a pull request β€” never a commit to the default branch;
  • opening the confirmation panel sends nothing at all; only the button does;
  • the model can propose but cannot act. That separation is the point.

The token lives in this browser, like the API key, with the same Forget button.

Attached files are checked before they are sent. A file that looks like it holds a credential is refused, and the message names the line, never the value. Sending a key to a provider cannot be undone.

The personality

It lives in an ordinary text file, prompts/caracat_persona.md, in the GitHub repository, and is published next to this page as caracat_persona.md. Edit a line there, and this Space picks it up on the next sync.

Its first rule is the one that matters most: ask instead of guessing. When an answer depends on something it does not know, it asks one focused question rather than inventing an answer that happens to fit.

Attribution

Caracat Code is based on Qwen3-Coder-Next by Qwen.

Licensed under Apache-2.0. The base model remains governed by the license under which Qwen distributes it. See NOTICE and THIRD_PARTY_LICENSES.md in the GitHub repository.