diff --git a/README.md b/README.md index 26a2f52..f9cb781 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Then: ```bash ghost-login # connect your account once (browser login) -ghost # start chatting (default: DeepSeek V4 Pro, private via the TEE gateway) +ghost # start chatting (default: Abliterated Large v2, private via the TEE gateway) ``` Re-run the same command, or `ghost update`, to update. From a local clone it's just `./install.sh`. Want the offline local model too? `GHOST_LOCAL=1 ...`. @@ -45,7 +45,7 @@ Re-run the same command, or `ghost update`, to update. From a local clone it's j **The Problem.** Frontier models refuse, moralize, and water answers down. You ask something direct, security research, something adult, something dual-use, something merely uncomfortable, and you get a disclaimer and a redirect to "safer alternatives." -**The Fix.** ghost only connects **open-weight, unrestricted models** (DeepSeek V4 Pro by default; Hermes 4 405B/70B) and applies a per-model steer, so the default answers in full with no sermon. Closed, refusing models (Claude, GPT, Gemini, Grok) aren't offered, and the gateway rejects anything off the list. It treats you as a competent adult, but it isn't an edgelord either: it won't volunteer illegal or shock content, it just won't refuse you. +**The Fix.** ghost only connects **open-weight, unrestricted models** (Abliterated Large v2 by default, with its refusals removed from the weights; plus DeepSeek V4 Pro and Hermes 4 405B/70B, steered), so the default answers in full with no sermon. Closed, refusing models (Claude, GPT, Gemini, Grok) aren't offered, and the gateway rejects anything off the list. It treats you as a competent adult, but it isn't an edgelord either: it won't volunteer illegal or shock content, it just won't refuse you. ### Problem #2: The Provider Reads Everything You Send @@ -77,7 +77,8 @@ Switch with `/model`, all open-weight, nothing closed or refusing: | Model | What it is | |---|---| -| `deepseek/deepseek-v4-pro` **(default)** | Strongest open reasoning + coding model; uncensored via ghost's steer. | +| `abliteration/abliterated-model-large-v2` **(default)** | Uncensored by abliteration, with refusals removed from the weights rather than steered past. 1M context; built for authorized offensive-security, red-team and long-horizon agent work. | +| `deepseek/deepseek-v4-pro` | Strongest open reasoning + coding model; uncensored via ghost's steer. | | `nous/hermes-4-405b` | Flagship uncensored open model, the most steerable. Also the hosted fallback. | | `nous/hermes-4-70b` | Fast, low-cost; runs ghost's auxiliary tasks. | | local (opt-in) | Abliterated 7B / 32B via `GHOST_LOCAL`, fully offline, zero egress. | diff --git a/privacy/scrubbing_proxy.py b/privacy/scrubbing_proxy.py index 314ab30..26a8e64 100755 --- a/privacy/scrubbing_proxy.py +++ b/privacy/scrubbing_proxy.py @@ -67,12 +67,16 @@ # single source of truth for both the picker and the bridge's allow-list (_ALLOWED_GATEWAY_MODELS). # # SUPPORTED-MODEL REFERENCE (gateway-verified by probing /v1/chat/completions, 2026-06-24): -# the gateway's open-weight models are hermes-4-405b, hermes-4-70b, deepseek-v4-pro, glm-5.2. -# NOTE: `og-veil models` is INCOMPLETE -- it omits deepseek-v4-pro and glm-5.2 even though the -# gateway serves them. Do NOT trust that list to add a model; probe the endpoint. The gateway -# rejects anything it doesn't serve with `Model '' is not supported`. +# the gateway's open-weight models are hermes-4-405b, hermes-4-70b, deepseek-v4-pro, glm-5.2, +# plus abliteration/abliterated-model-large-v2 (added 2026-10-29). For the abliterated model the +# gateway proxies to the abliteration provider inside the enclave (tee-gateway#183 / chat-api#446), +# so from ghost's side it is the same OHTTP/TEE/verify path -- no third-party key stored locally. +# NOTE: `og-veil models` is INCOMPLETE -- it omits deepseek-v4-pro, glm-5.2 and the abliterated id +# even though the gateway serves them. Do NOT trust that list to add a model; probe the endpoint. +# The gateway rejects anything it doesn't serve with `Model '' is not supported`. _CATALOG_MODELS = [ - ("deepseek/deepseek-v4-pro", "DeepSeek V4 Pro — strongest open reasoning + coding; best for agentic work (default)"), + ("abliteration/abliterated-model-large-v2", "Abliterated Large v2: refusals removed from the weights (not steered past), 1M context; for authorized offensive-security, red-team + long-horizon agents (default)"), + ("deepseek/deepseek-v4-pro", "DeepSeek V4 Pro — strongest open reasoning + coding; best for agentic work"), ("nous/hermes-4-405b", "Hermes 4 405B — flagship uncensored open model, most steerable"), ("nous/hermes-4-70b", "Hermes 4 70B — fast, low-cost open-weight model"), ] @@ -80,7 +84,7 @@ CATALOG_BYTES = json.dumps( { "version": 1, - "updated_at": "2026-06-10T00:00:00Z", + "updated_at": "2026-10-29T00:00:00Z", "providers": { "opengradient": { "metadata": {"display_name": "OpenGradient (TEE, OHTTP-private)"}, diff --git a/profile/config.yaml b/profile/config.yaml index ad7901c..f437aa5 100644 --- a/profile/config.yaml +++ b/profile/config.yaml @@ -1,6 +1,6 @@ model: base_url: http://127.0.0.1:8788/v1 - default: deepseek/deepseek-v4-pro + default: abliteration/abliterated-model-large-v2 provider: opengradient context_length: 1048576 ollama_num_ctx: 65536 @@ -17,7 +17,7 @@ providers: opengradient: base_url: http://127.0.0.1:8788/v1 api_key: managed-by-og-veil - default_model: deepseek/deepseek-v4-pro + default_model: abliteration/abliterated-model-large-v2 context_length: 1048576 ollama-local: base_url: http://localhost:11434/v1 diff --git a/tests/test_scrub.py b/tests/test_scrub.py index f4a76c0..612304c 100644 --- a/tests/test_scrub.py +++ b/tests/test_scrub.py @@ -274,7 +274,7 @@ def test_stream_multiline_data_frame_deanonymized(): def test_catalog_is_open_weight_only(): # ghost must only offer/allow OPEN-WEIGHT models; no closed/refusing ones. allowed = sp._ALLOWED_GATEWAY_MODELS - assert allowed == {"hermes-4-405b", "hermes-4-70b", "deepseek-v4-pro"} + assert allowed == {"abliterated-model-large-v2", "hermes-4-405b", "hermes-4-70b", "deepseek-v4-pro"} blob = json.dumps(sp._CATALOG_MODELS).lower() for closed in ("claude", "gpt-", "gemini", "grok", "anthropic", "seed-"): assert closed not in blob, f"closed model '{closed}' must not be in the catalog"