Text Generation
Safetensors
GGUF
English
qwen3_5
cybersecurity
pentesting
security
uncensored
tool-calling
llama-cpp
conversational
Instructions to use nesilabs/Nesi2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use nesilabs/Nesi2 with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf nesilabs/Nesi2:Q6_K # Run inference directly in the terminal: llama cli -hf nesilabs/Nesi2:Q6_K
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf nesilabs/Nesi2:Q6_K # Run inference directly in the terminal: llama cli -hf nesilabs/Nesi2:Q6_K
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf nesilabs/Nesi2:Q6_K # Run inference directly in the terminal: ./build/bin/llama cli -hf nesilabs/Nesi2:Q6_K
Use Docker
docker model run hf.co/nesilabs/Nesi2:Q6_K
- Llama new
- LM Studio
- Jan
- vLLM
How to use nesilabs/Nesi2 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "nesilabs/Nesi2" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "nesilabs/Nesi2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/nesilabs/Nesi2:Q6_K
- Ollama
How to use nesilabs/Nesi2 with Ollama:
ollama run hf.co/nesilabs/Nesi2:Q6_K
- Unsloth Desktop
- Pi
How to use nesilabs/Nesi2 with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf nesilabs/Nesi2:Q6_K
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "nesilabs/Nesi2:Q6_K" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use nesilabs/Nesi2 with Docker Model Runner:
docker model run hf.co/nesilabs/Nesi2:Q6_K
- Lemonade
How to use nesilabs/Nesi2 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull nesilabs/Nesi2:Q6_K
Run and chat with the model
lemonade run user.Nesi2-Q6_K
List all available models
lemonade list
- Hermes Agent
How to use nesilabs/Nesi2 with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf nesilabs/Nesi2:Q6_K
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default nesilabs/Nesi2:Q6_K
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use nesilabs/Nesi2 with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf nesilabs/Nesi2:Q6_K
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "nesilabs/Nesi2:Q6_K" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
README: dos configuraciones (Q8+MTP y Q6); modelo = nesi2
Browse files
README.md
CHANGED
|
@@ -7,7 +7,6 @@ tags:
|
|
| 7 |
- pentesting
|
| 8 |
- security
|
| 9 |
- uncensored
|
| 10 |
-
- qwen3
|
| 11 |
- tool-calling
|
| 12 |
- gguf
|
| 13 |
- llama-cpp
|
|
@@ -21,58 +20,74 @@ pipeline_tag: text-generation
|
|
| 21 |
penetration testing, vulnerability analysis, exploit development, secure
|
| 22 |
code review, and audit automation.
|
| 23 |
|
| 24 |
-
It is
|
| 25 |
-
|
| 26 |
-
**
|
| 27 |
-
|
| 28 |
-
reaches code-exec on multi-stage targets (web → WebSocket tool abuse → RCE) with
|
| 29 |
-
native tool-calling.
|
| 30 |
|
| 31 |
## Highlights
|
| 32 |
- **Unrestricted** for legitimate security use cases.
|
| 33 |
-
- **27B parameters**, long context (up to **240k tokens** in production), native tool-calling.
|
| 34 |
-
-
|
| 35 |
-
-
|
| 36 |
- Validated end-to-end as a **pentest agent** (live RCE + loot + flag on a 3-stage CTF).
|
| 37 |
|
| 38 |
## Model details
|
| 39 |
| | |
|
| 40 |
|---|---|
|
| 41 |
-
|
|
| 42 |
-
|
|
| 43 |
-
| Quantization | **Q6_K** (~22 GB weights) |
|
| 44 |
| Context length | up to 262,144 tokens (240k used in prod) |
|
| 45 |
| Tool-calling | OpenAI-compatible (native in llama.cpp `llama-server`) |
|
| 46 |
| Serving | **llama.cpp `llama-server`** (OpenAI `/v1` compatible) |
|
| 47 |
| KV cache | bf16 by default; `q8_0` to roughly halve footprint |
|
| 48 |
|
| 49 |
> Note: the Hub's "Architecture" widget reads the GGUF's internal loader tag
|
| 50 |
-
> (`general.architecture`)
|
| 51 |
-
>
|
| 52 |
|
| 53 |
## Files
|
| 54 |
| File | What |
|
| 55 |
|---|---|
|
| 56 |
-
| `Nesi2-
|
| 57 |
-
| `Nesi2-
|
|
|
|
|
|
|
| 58 |
|
| 59 |
---
|
| 60 |
|
| 61 |
-
##
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
|
| 63 |
Everything below runs **on the GPU box as root**. The gateway bits run on your
|
| 64 |
-
LiteLLM host. Target image: `nvidia/cuda:12.8.1-devel-ubuntu22.04`, ≥
|
|
|
|
| 65 |
|
| 66 |
### 0) Pick a GPU
|
| 67 |
-
| GPU | VRAM | Fits | single-stream tok/s (
|
| 68 |
|---|---|---|---|
|
| 69 |
-
| RTX A6000 | 48 GB | 1 user @ 240k | ~22 |
|
| 70 |
| RTX PRO 6000 **Max-Q** (power-capped ~300W) | 96 GB | 1–3 users @ 240k | ~20–25 (gateway end-to-end) |
|
| 71 |
-
| RTX PRO 6000 **WS** (full ~600W) | 96 GB |
|
| 72 |
|
| 73 |
-
> Blackwell (PRO 6000, `sm_120`) needs CUDA toolkit **≥ 12.8**
|
| 74 |
-
>
|
| 75 |
-
> `-DCMAKE_CUDA_ARCHITECTURES=120`. On Ampere (A6000) use `86`.
|
| 76 |
|
| 77 |
### 1) Deps + build llama.cpp
|
| 78 |
```bash
|
|
@@ -91,6 +106,9 @@ cmake --build build --config Release -j"$(nproc)" --target llama-server
|
|
| 91 |
|
| 92 |
### 2) Download the model
|
| 93 |
```bash
|
|
|
|
|
|
|
|
|
|
| 94 |
hf download nesilabs/Nesi2 --include "Nesi2-Q6_K*.gguf" --local-dir /root/models/nesi2
|
| 95 |
```
|
| 96 |
|
|
@@ -98,35 +116,35 @@ hf download nesilabs/Nesi2 --include "Nesi2-Q6_K*.gguf" --local-dir /root/models
|
|
| 98 |
Never start it with `setsid`/`nohup` over SSH (they die when the pipe closes).
|
| 99 |
Use **tmux** so it survives the SSH session.
|
| 100 |
|
| 101 |
-
|
|
|
|
|
|
|
|
|
|
| 102 |
```bash
|
| 103 |
-
GGUF=$(find /root/models/nesi2 -name "*.gguf" | grep -ivE "mmproj|vision|mtp" | sort | head -1)
|
| 104 |
tmux new-session -d -s nesi2 "/root/llama.cpp/build/bin/llama-server \
|
| 105 |
-
--model
|
| 106 |
-
--
|
|
|
|
|
|
|
|
|
|
| 107 |
--host 0.0.0.0 --port 8080 --api-key <YOUR_API_KEY> \
|
| 108 |
> /root/llama.log 2>&1"
|
| 109 |
```
|
|
|
|
| 110 |
|
| 111 |
-
|
| 112 |
-
`--parallel N` splits `--ctx-size` across slots → `n_ctx_slot = ctx_size / parallel`.
|
| 113 |
-
So for **3 slots of 240k each you need `--ctx-size 737280` (= 3 × 245760)**.
|
| 114 |
-
That much KV does not fit alongside Q6_K weights in 96 GB at bf16, so use a
|
| 115 |
-
**quantized KV cache** (`q8_0`, ~half the footprint, negligible quality loss):
|
| 116 |
```bash
|
| 117 |
-
GGUF=$(find /root/models/nesi2 -name "*.gguf" | grep -ivE "mmproj|vision|mtp" | sort | head -1)
|
| 118 |
tmux new-session -d -s nesi2 "/root/llama.cpp/build/bin/llama-server \
|
| 119 |
-
--model
|
| 120 |
-
--ctx-size
|
| 121 |
-
--cache-type-k q8_0 --cache-type-v q8_0 \
|
| 122 |
--host 0.0.0.0 --port 8080 --api-key <YOUR_API_KEY> \
|
| 123 |
> /root/llama.log 2>&1"
|
| 124 |
```
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
|
| 131 |
Wait for load (VRAM up + `server is listening`):
|
| 132 |
```bash
|
|
@@ -143,8 +161,6 @@ NESI2_API_KEY=<YOUR_API_KEY>
|
|
| 143 |
# then
|
| 144 |
docker compose up -d litellm
|
| 145 |
```
|
| 146 |
-
Get `<BOX_PUBLIC_IP>:<HOSTPORT>` with
|
| 147 |
-
`vastai show instance <ID> --raw` → `public_ipaddr` and `ports["8080/tcp"][0].HostPort`.
|
| 148 |
|
| 149 |
### 5) Verify end-to-end
|
| 150 |
```bash
|
|
@@ -157,22 +173,18 @@ curl -s -X POST https://<your-gateway>/v1/chat/completions \
|
|
| 157 |
|
| 158 |
## Lessons learned & recommendations
|
| 159 |
|
| 160 |
-
- **`reasoning_effort` breaks this chat template.** The template only accepts
|
| 161 |
-
`xhigh|medium|low`; a client sending `reasoning_effort: "high"` triggers a jinja
|
| 162 |
-
exception → HTTP 500. Strip it at the gateway (LiteLLM: `drop_params: true` +
|
| 163 |
-
`additional_drop_params: ["reasoning_effort"]`) so every client is unaffected.
|
| 164 |
- **`--parallel 1` is mandatory to actually get the full 240k in one slot.** The
|
| 165 |
llama.cpp default (`--parallel 4`) silently gives each slot `ctx/4`.
|
| 166 |
- **`-fa on` (flash-attention)** — keep it on; large context is unusable without it.
|
| 167 |
- **tmux, not setsid/nohup.** Over SSH the detached process dies and you get an
|
| 168 |
empty log; tmux survives.
|
| 169 |
-
- **Agent discipline > raw capability.**
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
- **Isolate the agent's filesystem for honest evals.** A harness whose shell can
|
| 177 |
read your machine will "solve" a CTF by reading the solution/writeups off disk
|
| 178 |
instead of attacking live. Deny reads outside the target (regex guard in the tool
|
|
@@ -180,13 +192,13 @@ curl -s -X POST https://<your-gateway>/v1/chat/completions \
|
|
| 180 |
stays open.
|
| 181 |
- **KV quantization scales users cheaply.** `--cache-type-k/v q8_0` roughly doubles
|
| 182 |
how many 240k slots fit, with no quality drift we could measure; it's what makes
|
| 183 |
-
the
|
| 184 |
- **Max-Q vs WS.** The power-capped Max-Q PRO 6000 is ~2.5× slower than the full WS
|
| 185 |
for ~0.25 $/h less. For interactive/agent use pay for the WS; for cheap batch,
|
| 186 |
Max-Q is fine.
|
| 187 |
-
- **Speculative decode (MTP).** The `*-mtp.gguf` draft head is included; under
|
| 188 |
-
concurrency it did **not** help throughput in our tests
|
| 189 |
-
|
| 190 |
|
| 191 |
## ⚠️ Legal Notice / Disclaimer
|
| 192 |
|
|
@@ -214,5 +226,4 @@ By using Nesi2 you accept this notice and the Nesilabs Terms of Service and
|
|
| 214 |
Acceptable Use Policy.
|
| 215 |
|
| 216 |
## License
|
| 217 |
-
Released under **Apache 2.0**.
|
| 218 |
-
Adapted and packaged by Nesilabs.
|
|
|
|
| 7 |
- pentesting
|
| 8 |
- security
|
| 9 |
- uncensored
|
|
|
|
| 10 |
- tool-calling
|
| 11 |
- gguf
|
| 12 |
- llama-cpp
|
|
|
|
| 20 |
penetration testing, vulnerability analysis, exploit development, secure
|
| 21 |
code review, and audit automation.
|
| 22 |
|
| 23 |
+
It is packaged by Nesilabs as a **GGUF** build for **llama.cpp**, so it runs on a
|
| 24 |
+
single GPU without an AWQ/vLLM stack. This is the build we run as an autonomous
|
| 25 |
+
**pentest agent**: it reliably reaches code-exec on multi-stage targets
|
| 26 |
+
(web → WebSocket tool abuse → RCE) with native tool-calling.
|
|
|
|
|
|
|
| 27 |
|
| 28 |
## Highlights
|
| 29 |
- **Unrestricted** for legitimate security use cases.
|
| 30 |
+
- **~27B parameters**, long context (up to **240k tokens** in production), native tool-calling.
|
| 31 |
+
- Two GGUF builds: **Q8_0** (≈lossless, production quality) and **Q6_K** (lighter).
|
| 32 |
+
- Ships the **MTP** draft weights (`*-mtp*.gguf`) for optional speculative decode.
|
| 33 |
- Validated end-to-end as a **pentest agent** (live RCE + loot + flag on a 3-stage CTF).
|
| 34 |
|
| 35 |
## Model details
|
| 36 |
| | |
|
| 37 |
|---|---|
|
| 38 |
+
| Format | **GGUF** (llama.cpp) |
|
| 39 |
+
| Quantizations | **Q8_0** (~29 GB) · **Q6_K** (~22 GB) |
|
|
|
|
| 40 |
| Context length | up to 262,144 tokens (240k used in prod) |
|
| 41 |
| Tool-calling | OpenAI-compatible (native in llama.cpp `llama-server`) |
|
| 42 |
| Serving | **llama.cpp `llama-server`** (OpenAI `/v1` compatible) |
|
| 43 |
| KV cache | bf16 by default; `q8_0` to roughly halve footprint |
|
| 44 |
|
| 45 |
> Note: the Hub's "Architecture" widget reads the GGUF's internal loader tag
|
| 46 |
+
> (`general.architecture`); that is only a llama.cpp loader key baked into the
|
| 47 |
+
> file and does not reflect the model name. The model is **Nesi2**.
|
| 48 |
|
| 49 |
## Files
|
| 50 |
| File | What |
|
| 51 |
|---|---|
|
| 52 |
+
| `Nesi2-Q8_0.gguf` | the model, **Q8_0** (max quality) |
|
| 53 |
+
| `Nesi2-mtp-Q8_0.gguf` | MTP draft head for Q8 (optional, `--model-draft`) |
|
| 54 |
+
| `Nesi2-Q6_K.gguf` | the model, **Q6_K** (lighter) |
|
| 55 |
+
| `Nesi2-Q6_K-mtp.gguf` | Q6_K with the MTP head already merged (single file) |
|
| 56 |
|
| 57 |
---
|
| 58 |
|
| 59 |
+
## Two configurations
|
| 60 |
+
|
| 61 |
+
Both serve the same `nesi2` model over an OpenAI-compatible `/v1`. Pick by VRAM
|
| 62 |
+
and quality target.
|
| 63 |
+
|
| 64 |
+
| Config | Files | VRAM (weights + MTP) | When |
|
| 65 |
+
|---|---|---|---|
|
| 66 |
+
| **A — Q8_0 + MTP** | `Nesi2-Q8_0.gguf` + `Nesi2-mtp-Q8_0.gguf` | ~29 + ~3 GB | max quality, 96 GB card |
|
| 67 |
+
| **B — Q6_K (+MTP)** | `Nesi2-Q6_K.gguf` (or `Nesi2-Q6_K-mtp.gguf`) | ~22 GB | lighter, more slots / smaller card |
|
| 68 |
+
|
| 69 |
+
> **MTP (speculative decode)** needs a llama.cpp build that supports
|
| 70 |
+
> `--spec-type draft-mtp`. It helps **single-stream latency**; under heavy
|
| 71 |
+
> concurrency it did not improve aggregate throughput in our tests, so for
|
| 72 |
+
> multi-user serving you can run without it and keep it for low-latency use.
|
| 73 |
+
|
| 74 |
+
---
|
| 75 |
+
|
| 76 |
+
## Deploy on a GPU box from zero
|
| 77 |
|
| 78 |
Everything below runs **on the GPU box as root**. The gateway bits run on your
|
| 79 |
+
LiteLLM host. Target image: `nvidia/cuda:12.8.1-devel-ubuntu22.04`, ≥ 60 GB disk
|
| 80 |
+
(≥ 90 GB if you want Q8 **and** Q6 on the same box).
|
| 81 |
|
| 82 |
### 0) Pick a GPU
|
| 83 |
+
| GPU | VRAM | Fits | single-stream tok/s (240k slot) |
|
| 84 |
|---|---|---|---|
|
| 85 |
+
| RTX A6000 | 48 GB | 1 user @ 240k (Q6_K) | ~22 |
|
| 86 |
| RTX PRO 6000 **Max-Q** (power-capped ~300W) | 96 GB | 1–3 users @ 240k | ~20–25 (gateway end-to-end) |
|
| 87 |
+
| RTX PRO 6000 **WS** (full ~600W) | 96 GB | up to 5 users @ 240k (Q8+MTP) | **~55** |
|
| 88 |
|
| 89 |
+
> Blackwell (PRO 6000, `sm_120`) needs CUDA toolkit **≥ 12.8**; build llama.cpp
|
| 90 |
+
> with `-DCMAKE_CUDA_ARCHITECTURES=120`. On Ampere (A6000) use `86`.
|
|
|
|
| 91 |
|
| 92 |
### 1) Deps + build llama.cpp
|
| 93 |
```bash
|
|
|
|
| 106 |
|
| 107 |
### 2) Download the model
|
| 108 |
```bash
|
| 109 |
+
# Config A — Q8 + MTP
|
| 110 |
+
hf download nesilabs/Nesi2 --include "Nesi2-Q8_0.gguf" "Nesi2-mtp-Q8_0.gguf" --local-dir /root/models/nesi2
|
| 111 |
+
# Config B — Q6_K
|
| 112 |
hf download nesilabs/Nesi2 --include "Nesi2-Q6_K*.gguf" --local-dir /root/models/nesi2
|
| 113 |
```
|
| 114 |
|
|
|
|
| 116 |
Never start it with `setsid`/`nohup` over SSH (they die when the pipe closes).
|
| 117 |
Use **tmux** so it survives the SSH session.
|
| 118 |
|
| 119 |
+
#### Config A — Q8_0 + MTP, 5 users @ 240k (production, RTX PRO 6000 WS)
|
| 120 |
+
`--parallel N` splits `--ctx-size` across slots → `n_ctx_slot = ctx_size / parallel`.
|
| 121 |
+
For **5 slots of 240k each** you need `--ctx-size 1228800` (= 5 × 245760), a
|
| 122 |
+
**quantized KV cache** (`q8_0`), and the MTP draft:
|
| 123 |
```bash
|
|
|
|
| 124 |
tmux new-session -d -s nesi2 "/root/llama.cpp/build/bin/llama-server \
|
| 125 |
+
--model /root/models/nesi2/Nesi2-Q8_0.gguf --alias nesi2 \
|
| 126 |
+
--n-gpu-layers 999 -fa on \
|
| 127 |
+
--cache-type-k q8_0 --cache-type-v q8_0 \
|
| 128 |
+
--spec-type draft-mtp --model-draft /root/models/nesi2/Nesi2-mtp-Q8_0.gguf --spec-draft-n-max 3 \
|
| 129 |
+
--ctx-size 1228800 --parallel 5 \
|
| 130 |
--host 0.0.0.0 --port 8080 --api-key <YOUR_API_KEY> \
|
| 131 |
> /root/llama.log 2>&1"
|
| 132 |
```
|
| 133 |
+
VRAM ≈ 84 / 96 GB. Drop `--spec-type/--model-draft` if your build lacks MTP.
|
| 134 |
|
| 135 |
+
#### Config B — Q6_K, single power user @ 240k
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
```bash
|
|
|
|
| 137 |
tmux new-session -d -s nesi2 "/root/llama.cpp/build/bin/llama-server \
|
| 138 |
+
--model /root/models/nesi2/Nesi2-Q6_K.gguf --alias nesi2 \
|
| 139 |
+
--ctx-size 245760 --parallel 1 --n-gpu-layers 999 -fa on \
|
|
|
|
| 140 |
--host 0.0.0.0 --port 8080 --api-key <YOUR_API_KEY> \
|
| 141 |
> /root/llama.log 2>&1"
|
| 142 |
```
|
| 143 |
+
For **3 users @ 240k each** on a 96 GB card, use `--ctx-size 737280 --parallel 3`
|
| 144 |
+
plus `--cache-type-k q8_0 --cache-type-v q8_0`. If it OOMs, drop to
|
| 145 |
+
`q4_0` KV, lower per-user context (e.g. `--ctx-size 393216 --parallel 3` = 128k
|
| 146 |
+
each), or move to a 2× GPU box. Under `--parallel 3` per-stream speed drops
|
| 147 |
+
(~55 → ~20–30 tok/s) but aggregate throughput goes up.
|
| 148 |
|
| 149 |
Wait for load (VRAM up + `server is listening`):
|
| 150 |
```bash
|
|
|
|
| 161 |
# then
|
| 162 |
docker compose up -d litellm
|
| 163 |
```
|
|
|
|
|
|
|
| 164 |
|
| 165 |
### 5) Verify end-to-end
|
| 166 |
```bash
|
|
|
|
| 173 |
|
| 174 |
## Lessons learned & recommendations
|
| 175 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
- **`--parallel 1` is mandatory to actually get the full 240k in one slot.** The
|
| 177 |
llama.cpp default (`--parallel 4`) silently gives each slot `ctx/4`.
|
| 178 |
- **`-fa on` (flash-attention)** — keep it on; large context is unusable without it.
|
| 179 |
- **tmux, not setsid/nohup.** Over SSH the detached process dies and you get an
|
| 180 |
empty log; tmux survives.
|
| 181 |
+
- **Agent discipline > raw capability.** As an agent Nesi2 shines because of
|
| 182 |
+
*tool-calling discipline*: it acts (one concrete tool call per turn) instead of
|
| 183 |
+
narrating. Give it a lean system prompt that says: act don't narrate; write your
|
| 184 |
+
own Python for anything past a simple HTTP request (WebSocket, sockets, rotating
|
| 185 |
+
CSRF); get code-exec first and confirm with `id`; and **keep durable state on
|
| 186 |
+
disk** (a `NOTES.md` + reusable scripts) so a context compaction doesn't make it
|
| 187 |
+
re-derive what it already solved.
|
| 188 |
- **Isolate the agent's filesystem for honest evals.** A harness whose shell can
|
| 189 |
read your machine will "solve" a CTF by reading the solution/writeups off disk
|
| 190 |
instead of attacking live. Deny reads outside the target (regex guard in the tool
|
|
|
|
| 192 |
stays open.
|
| 193 |
- **KV quantization scales users cheaply.** `--cache-type-k/v q8_0` roughly doubles
|
| 194 |
how many 240k slots fit, with no quality drift we could measure; it's what makes
|
| 195 |
+
the multi-user profiles fit a single 96 GB card.
|
| 196 |
- **Max-Q vs WS.** The power-capped Max-Q PRO 6000 is ~2.5× slower than the full WS
|
| 197 |
for ~0.25 $/h less. For interactive/agent use pay for the WS; for cheap batch,
|
| 198 |
Max-Q is fine.
|
| 199 |
+
- **Speculative decode (MTP).** The `*-mtp*.gguf` draft head is included; under
|
| 200 |
+
concurrency it did **not** help throughput in our tests, so we run without it for
|
| 201 |
+
multi-user serving and keep it available for single-stream latency.
|
| 202 |
|
| 203 |
## ⚠️ Legal Notice / Disclaimer
|
| 204 |
|
|
|
|
| 226 |
Acceptable Use Policy.
|
| 227 |
|
| 228 |
## License
|
| 229 |
+
Released under **Apache 2.0**. Packaged and optimized by Nesilabs.
|
|
|