Table of Contents

For long-context Hermes work, I would start with Qwen3.5 35B on two 16GB RTX 5060 Ti cards. The tested route retained 239,153 input tokens through LiteLLM and passed separate tool, streaming, vision, queued-request, and cancellation checks. Qwen3.6 is my one-card alternative. On the RTX 3060 Ti and RTX 3070 systems, I would start with Qwen3.5 2B or 4B.

Those choices come from running models through the inference paths used by the agent. I tested long-input retention, tool round trips, streamed responses, image questions, and model release. I also tested the modes and memory settings behind the routes, because a model loading successfully says little about its usefulness during a long agent request.

Hermes requires at least 64,000 tokens of context for agent use with tools. I used 65,536 actual input tokens as the long-context qualification threshold. The input count matters more than the context size advertised by the server. ( Hermes Agent provider documentation )

Which GPUs were in each system

The system letters identify the hardware combinations throughout the results.

SystemGPUs used for this benchmarkMy starting model choice
A2 × GeForce RTX 5060 Ti, 16GB eachQwen3.5 35B across both cards, or Qwen3.6 on one card
B1 × RTX 2000E Ada, 16GBQwen3.5 9B when several minutes of long-input processing fits the task
C1 × RTX 2000E Ada, 16GBGemma 3 4B for the tested long-input path, Qwen3.5 0.8B in nonthinking mode for narrow recall work
D1 × RTX 2000E Ada, 16GBQwen3.5 9B, Gemma 4 12B-IT, or GPT-OSS 20B for the tested larger-model workloads
E9 × GeForce RTX 3060 Ti, 8GB eachQwen3.5 2B or 4B
F8 × GeForce RTX 3060 Ti, 8GB eachQwen3.5 2B or 4B
G3 × GeForce RTX 3070Qwen3.5 2B or 4B

Installed card count does not mean every request used every GPU. The Qwen3.5 35B and Flash Next trials used both cards in System A. Qwen3.6 used one card. The successful System E Qwen3.5 4B vision rerun used one selected card from an eight-card pool while a ninth card stayed excluded from AI work.

Treat the durations below as results for the tested model, runtime, and system together. These runs compare usable configurations. They do not isolate GPU architecture as the cause of a speed difference.

Two RTX 5060 Ti cards make Qwen3.5 35B my long-context choice

Qwen3.5 35B produced the largest retained-input result in these tests. The direct Ollama progression retained 248,279 input tokens inside a 262,144-token runtime context. A separate streamed gateway request retained 239,153 input tokens, returned the opening marker, and ended naturally after 31 output tokens in 148.12 seconds.

The gateway result matters for Hermes because the request passed through the broker and LiteLLM. Separate requests completed a tool round trip, recognized a red image, and returned two correct answers when submitted together. The broker queued those two requests. Closing a streamed request released the broker and unloaded the model within 60.31 seconds.

Qwen3.5 35B requestInput tokensOutput tokensDurationOutcome
Direct Ollama, first progressive stage69,4293138.783 sExact opening marker
Direct Ollama, shared-prefix continuation124,1793128.472 sExact opening marker
Direct Ollama, shared-prefix continuation182,5793138.974 sExact opening marker
Direct Ollama, shared-prefix continuation248,2793154.215 sExact opening marker
Broker streaming request69,4272938.872 sExact opening marker
LiteLLM streaming request239,15331148.12 sExact opening marker, clean unload

The progressive direct requests reused an expanding prefix. Their durations describe warm continuation behavior. The 54.215-second result is not an independent cold processing measurement for a fresh 248K prompt.

At the largest direct stage, the model reported about 27.3 billion bytes resident across the two GPUs. Per-card memory peaks reached 14,964 and 12,386 MiB.

Peak temperatures reached 62 and 63 C, and the run recorded no OOM or Xid fault. The input left 13,865 tokens inside the configured context for continuation. The short marker answer used 31 of those tokens.

I would use this route when retaining a large working set matters more than the shortest initial response. The tool and vision checks establish useful agent behaviors, while the long-input test establishes retention. They are separate workloads.

Qwen3.6 is the one-card option

Qwen3.6-35B-A3B UD-Q4_K_XL retained 131,000 input tokens on one RTX 5060 Ti. The other card stayed idle during the test. This gives the system a useful alternative when dedicating both cards to one model is undesirable.

Qwen3.6 gateway requestInput tokensOutput tokensDurationOutcome
Initial long request66,007167.82 sOpening marker retained
Longer request90,00011159.92 sOpening marker retained, zero cached input
Longer request119,99911250.61 sOpening marker retained, zero cached input
Near runtime limit131,00011287.09 sOpening marker retained, zero cached input

The 131,000-token request approached the 131,072-token runtime limit. For an agent, I would leave more space for the answer and subsequent tool messages. A near-limit retention result is useful evidence of input handling, rather than a sensible default input budget.

Tool use passed with thinking disabled. Default thinking consumed the 512-token trial allowance before issuing the tool call. The successful pilot also passed quick, streamed, and vision requests. Its initial 65,845-token context check took 139.57 seconds.

Qwen3.8 27B wins the matched 66K response comparison

For the same 66,007-token marker workload on System A, Qwen3.8 27B returned the answer fastest. I would keep this route available for requests around the tested input size, alongside Qwen3.5 35B for the larger working set.

System A routeInput tokensDurationOutcome
Qwen3.8 27B66,00754.64 sOpening marker retained
Qwen3.6-35B-A3B UD-Q4_K_XL66,007167.82 sOpening marker retained
Qwen3.8-Flash-Next UD-IQ4_XS66,007164.58 sOpening marker retained
Flash Next IQ4 compatibility alias66,007213.25 sMarker retained

Qwen3.8 27B took about one third of the matched Qwen3.6 and Flash Next request durations. These are complete-request observations with the tested runtimes, rather than a hardware-only comparison.

Quick responses, streaming, and tool use also passed. Thinking-disabled mode completed the full color sequence and tool round trip, while the thinking trial returned only part of the color sequence within its 512-token allowance.

Flash Next remains a less attractive default on this system because of memory pressure. Its 65,847-token pilot passed in 201.41 seconds at 98,304 runtime context. Two earlier 131,072-context profiles reached their memory limits before readiness.

The later route reached its 54 GiB cgroup cap. I would choose a route with more memory headroom for unattended work.

The route labelled flash-iq2 served the Flash Next IQ4 compatibility backend. Its name does not identify an IQ2 result.

The RTX 2000E Ada handles long input, but model choice changes the wait

Gemma 3 4B is my preferred tested long-input route on System C. Two paths retained more than 84K input tokens in about 88 seconds. The larger model routes passed useful retention checks too, but their requests took several minutes.

SystemModel and pathInput tokensDurationOutcome
BQwen3.5 9B, gateway72,265263 sBoth sentinels retained, later mining-recovery check passed
CGemma 3 4B, gateway84,04488.05 sOpening marker retained
CGemma 3 4B, Aperture84,04587.68 sOpening marker retained
CGemma 4 12B-IT, gateway67,254263.07 sOpening marker retained
CGemma 4 12B-IT, Aperture non-stream67,255274.24 sOpening marker retained
CGemma 4 12B-IT, Aperture stream67,255282.16 sOpening marker retained
CQwen3.5 9B, gateway75,648319.36 sOpening marker retained, model unloaded
CGPT-OSS 20B, gateway84,099315.83 sOpening marker retained, model unloaded
DQwen3.5 9B, Aperture81,051324.07 sRetention passed on the installed artifact
DGemma 4 12B-IT, Aperture72,057300.67 sRetention passed on the installed artifact
DGPT-OSS 20B, Aperture72,104245.94 sRetention passed on the installed artifact

Streaming did not remove Gemma 4’s long-prefill wait on System C. The first streamed content arrived after 277.49 seconds, later than the complete 274.24-second non-stream response. An earlier non-stream attempt timed out before the successful retry. I would reserve this route for work where several minutes of initial processing fits the task.

Gemma 3 4B also shows why I would keep qualification specific to each tested system. System D missed the opening marker in two 65K recall attempts, including a temperature-zero repeat with 67,252 input tokens. The deterministic request ended naturally in 62.07 seconds with full GPU residency.

Fast completion and a normal API response did not make the answer correct. I would use the successful System C route and leave the failing System D route out of Hermes selection.

Thinking mode decides whether Qwen3.5 0.8B is useful

Qwen3.5 0.8B became a useful narrow-recall candidate on System C after thinking was disabled. The small Q8_0 model retained 75,649 input tokens through the gateway in 65.92 seconds. This result belongs to the tested Q8_0 artifact and nonthinking route, rather than the older 16K-context configurations elsewhere in the table.

Qwen3.5 0.8B request on System CInput tokensOutput tokensDurationOutcome
Default thinking, short diagnostic9,0503,39166.56 sExact opening marker
Thinking disabled, matched diagnostic9,055217.65 sExact opening marker, no reasoning text
Default thinking, long attempt600 s timeoutNo completed answer
Thinking disabled, native Ollama75,6562269.80 sExact opening marker
Nonthinking OpenAI-compatible endpoint75,6461269.09 sExact opening marker
Broker with nonthinking mode enforced75,6471366.83 sExact opening marker
LiteLLM through System A to System C75,6491565.92 sExact opening marker

The matched diagnostic fell from 66.56 to 7.65 seconds, about 8.7 times faster, while generated output fell from 3,391 to 21 tokens. This is why I would set the reasoning mode explicitly for simple extraction and routing tasks. Default reasoning spent most of the work on output the task did not need.

A short OpenAI-compatible probe missed its marker before the temperature-zero retry passed. The successful route checks used nonthinking mode and natural completion without an output cap. Three other gateways passed short marker requests in 4.22, 4.37, and 3.85 seconds. Those checks establish routing, while the 75,649-token request establishes long-input retention through the gateway.

I would trial this route for bounded recall and extraction. I would choose a larger model for open-ended agent reasoning. Retrieving one synthetic marker is a narrower task than planning, coding, or coordinating several tools.

The RTX 3060 Ti and RTX 3070 systems favor Qwen3.5 2B and 4B

Qwen3.5 2B and 4B are my practical starting choices for the 8GB cards. Their text context requests on Systems E, F, and G passed with 65,579 input tokens and durations from 30.343 to 93.753 seconds. The tested 4B routes also passed tool, streaming, and image checks.

System E’s 4B vision-context rerun retained both markers and the ordered image colors at 65,637 input tokens in 44.88 seconds. Forward and reversed color-order requests passed too. The rerun used one healthy card after another card suffered an Xid 79 link fault and the system rebooted.

SystemQwen3.5 2B text contextQwen3.5 4B text contextQwen3.5 4B vision context
E, RTX 3060 Ti pool65,579 tokens, 30.343 s65,579 tokens, 53.787 s65,637 tokens, 44.88 s
F, RTX 3060 Ti pool65,579 tokens, 61.282 s65,579 tokens, 93.753 s65,635 tokens, 84.749 s
G, RTX 3070 pool65,579 tokens, 76.731 s65,579 tokens, 90.807 s65,635 tokens, 87.496 s

Each of these systems recorded 29 passing checks. The timing spread across the two RTX 3060 Ti systems also shows why I would select a tested system profile rather than rank cards from these request durations.

All seven systems returned to mining after the inference window. System B’s separate post-stop recovery check passed with fresh accepted shares. The faulting card in System E later returned to mining after a reboot and PCIe link hardening, while its AI-pool exclusion stayed in place. Restoring mining at the end of the window is a separate result from automatic hand-back after an individual inference request.

Loading a model does not qualify the model

I would exclude DeepSeek Coder V2 16B from the tested 65K Hermes choices. Its f16-cache run retained 50,477 input tokens, but the 65K-target run reached the VRAM guard. Q4 and Q8 cache alternatives loaded the weights on the GPUs, then hit host-memory limits or poor long-prompt throughput.

DeepSeek Coder V2 cache profileRuntime contextObserved resultMy assessment
f1681,92050,477-token recall passed, oversized request rejectedUseful shorter-context result
f1673,72865K-target prefill stopped at 15,802 MiB GPU useDoes not qualify for 65K
Q4_098,304Long prefill fell to 96.72 tokens/s before the controlled stopPoor fit for this workload
Q8_077,824Long prefill fell to 120.12 tokens/s before the controlled stopPoor fit for this workload
Q4_0 / Q8_0, larger profiles163,840 / 98,304Host-memory guards stopped the trialsMemory fit needs the whole system

The practical lesson is to benchmark the request you intend to send. GPU residency, a short answer, and a large configured context do not establish retained long input at a useful latency.

Granite 4.2 8B and GPT-OSS 20B improved after route-specific follow-up work on System A. Granite’s Q6_K route retained 66,082 input tokens in 88.636 seconds with zero cached input. GPT-OSS completed its tool round trip after the broker fix, with 9.854 seconds for the call and 9.849 seconds for the follow-up. I would keep these successful route checks distinct from earlier incomplete attempts.

Full benchmark results

The table contains 295 checks across 59 model and system combinations. The matrix records 273 passes, one failed recall check, and seven incomplete, inconsistent, or incompatible outcomes. Fourteen checks sit outside the 65K qualification scope. Every row keeps its measured outcome visible.

My recommendations apply to the passing routes and workloads. A failed or incomplete row does not qualify the corresponding behavior.

Short-context and embedding passes apply to their own workloads. A 16K or 32K context pass does not qualify a route for the 65,536-input-token Hermes workload. Model names here are route labels. The flash-iq2 label served the IQ4 compatibility backend.

The System A Qwen3.5 35B context row is the final shared-prefix stage from the progression above. Tool durations written with a plus sign show the call and follow-up separately.

The concurrency row gives the two queued request durations. The cancellation row gives release time after the client closed the stream. Supplemental context progressions and Qwen3.5 0.8B route comparisons appear in their own tables above.

System A

Model route labelCheckOutcomeInput tokensRequest duration
bonsai-2-27bcontextPass65,62188.746 s
bonsai-2-27bquickPass576.429 s
bonsai-2-27bstreamPass9.371 s
bonsai-2-27btoolsPass10.478 s
deepseek-coder-v2:16bcontextIncompatible50,477
deepseek-coder-v2:16bquickPass7743.239 s
flash-iq2contextPass66,007213.25 s
flash-iq2quickPass56.03 s
flash-iq2streamPass1.35 s
flash-iq2toolsPass16.55 s
gemma-4-12b-itcontextPass65,59051.225 s
gemma-4-12b-itquickPass215.166 s
gemma-4-12b-itstreamPass4.653 s
gemma-4-12b-ittoolsPass18.72 s
gemma-4-12b-itvisionPass1157.222 s
gemma-4-12b-itvision_contextPass65,68556.06 s
gemma-4-12b-itvision_reversePass1157.467 s
gemma-4-e4b-itcontextPass65,59021.889 s
gemma-4-e4b-itquickPass2117.919 s
gemma-4-e4b-itstreamPass4.25 s
gemma-4-e4b-ittoolsPass8.734 s
gpt-oss-20bcontextPass65,637159.155 s
gpt-oss-20bquickPass7310.548 s
gpt-oss-20bstreamPass20.594 s
gpt-oss-20btoolsPass9.854 + 9.849 s
granite-4.2-3bcontextPass65,58970.968 s
granite-4.2-3bquickPass204.009 s
granite-4.2-3bstreamPass5.365 s
granite-4.2-3btoolsPass6.086 s
granite-4.2-8bcontextPass66,08288.636 s
granite-4.2-8bquickPass205.857 s
granite-4.2-8bstreamPass11.826 s
granite-4.2-8btoolsPass11.852 s
qwen27bcontextPass66,00754.64 s
qwen27bquickPass5731.5 s
qwen27bstreamPass0.92 s
qwen27btoolsPass4.25 s
qwen3-embedding-0.6bcontextPass32,7677.736 s
qwen3-embedding-0.6bquickPass142.125 s
qwen3.5-0.8bcontextPass16,42910.5 s
qwen3.5-0.8bquickPass1714.316 s
qwen3.5-0.8bstreamPass2.125 s
qwen3.5-0.8btoolsPass4.416 s
qwen3.5-2bcontextPass65,58111.175 s
qwen3.5-2bquickPass174.519 s
qwen3.5-2bstreamPass3.736 s
qwen3.5-2btoolsPass5.046 s
qwen3.5-4bcontextPass65,57936.451 s
qwen3.5-4bquickPass1519.935 s
qwen3.5-4bstreamPass17.496 s
qwen3.5-4btoolsPass7.308 s
qwen3.5-4bvisionPass707.848 s
qwen3.5-4bvision_contextPass65,63528.24 s
qwen3.5-4bvision_reversePass704.386 s
qwen3.5-9bcontextPass65,58134.139 s
qwen3.5-9bquickPass173.88 s
qwen3.5-9bstreamPass3.378 s
qwen3.5-9btoolsPass10.204 s
qwen3.5-9bvisionPass724.441 s
qwen3.5-9bvision_contextPass65,63733.745 s
qwen3.5-9bvision_reversePass723.97 s
qwen3.5:35b-a3b-q4_K_McancellationPass60.31 s
qwen3.5:35b-a3b-q4_K_MconcurrencyPass26.23 / 25.33 s
qwen3.5:35b-a3b-q4_K_McontextPass248,27954.215 s
qwen3.5:35b-a3b-q4_K_MgatewayPass239,153148.12 s
qwen3.5:35b-a3b-q4_K_MquickPass7910.08 s
qwen3.5:35b-a3b-q4_K_MstreamPass69,42938.783 s
qwen3.5:35b-a3b-q4_K_MtoolsPass15.22 + 14.83 s
qwen3.5:35b-a3b-q4_K_MvisionPass18.39 s
Qwen3.6-35B-A3B UD-Q4_K_XLcontextPass65,845139.57 s
Qwen3.6-35B-A3B UD-Q4_K_XLquickPass153.97 s
Qwen3.6-35B-A3B UD-Q4_K_XLstreamPass0.45 s
Qwen3.6-35B-A3B UD-Q4_K_XLtoolsPass2935.48 s
Qwen3.6-35B-A3B UD-Q4_K_XLvisionPass380.59 s
Qwen3.8-Flash-Next UD-IQ4_XScontextPass65,847201.41 s
Qwen3.8-Flash-Next UD-IQ4_XSquickPass1754.62 s
Qwen3.8-Flash-Next UD-IQ4_XSstreamPass1.2 s
Qwen3.8-Flash-Next UD-IQ4_XStoolsPass22.18 s
Qwen3.8-Flash-Next UD-IQ4_XSvisionPass3.86 s

System B

Model route labelCheckOutcomeInput tokensRequest duration
gemma-4-12b-itcontextPass65,590299.163 s
gemma-4-12b-itquickPass2115.261 s
gemma-4-12b-itstreamPass148.792 s
gemma-4-12b-ittoolsPass34.124 s
gemma-4-12b-itvisionPass12061.455 s
gemma-4-12b-itvision_contextPass65,690295.581 s
gemma-4-12b-itvision_reversePass12032.511 s
gemma3-4bcontextPass65,58467.382 s
gemma3-4bquickPass156.329 s
gemma3-4bstreamPass24.138 s
gemma3-4bvisionPass3067.018 s
gemma3-4bvision_contextPass65,87670.912 s
gemma3-4bvision_reversePass3065.762 s
gpt-oss-20bcontextPass65,637206.767 s
gpt-oss-20bquickPass7216.583 s
gpt-oss-20bstreamPass32.075 s
gpt-oss-20btoolsPass28.102 s
nomic-embed-textcontextIncomplete2,048
nomic-embed-textquickPass7.117 s
qwen3-14bcontextIncomplete1800.09 s
qwen3-14bquickPass1537.199 s
qwen3-14bstreamPass35.471 s
qwen3-14btoolsPass87.554 s
qwen3-8bcontextExcluded below 65K, excluded
qwen3-8bquickExcluded below 65K, pass1521.059 s
qwen3-8bstreamExcluded below 65K, excluded
qwen3-8btoolsExcluded below 65K, excluded
qwen3.5-9bcontextPass65,579282.796 s
qwen3.5-9blitellm_long_routePass72,265263 s
qwen3.5-9bpost_external_stop_miningPass
qwen3.5-9bquickPass1525.881 s
qwen3.5-9bstreamPass143.44 s
qwen3.5-9btoolsPass31.812 s
qwen3.5-9bvisionPass7532.015 s
qwen3.5-9bvision_contextPass65,640396.288 s
qwen3.5-9bvision_reversePass7528.626 s

System C

Model route labelCheckOutcomeInput tokensRequest duration
gemma-4-12b-itaperture_contextPass67,255274.24 s
gemma-4-12b-itaperture_shortPass3539.32 s
gemma-4-12b-itaperture_stream_contextPass67,255282.16 s
gemma-4-12b-itcontextPass65,670313.661 s
gemma-4-12b-itgateway_contextPass67,254263.07 s
gemma-4-12b-itgateway_shortPass2720.98 s
gemma-4-12b-itquickPass2116.447 s
gemma-4-12b-itstreamPass15.175 s
gemma-4-12b-ittoolsPass37.821 s
gemma-4-12b-itvisionPass12058.52 s
gemma-4-12b-itvision_contextPass65,690308.759 s
gemma-4-12b-itvision_reversePass12031.25 s
gemma3-4baperture_contextPass84,04587.68 s
gemma3-4baperture_after_system_d_route_changePass245.42 s
gemma3-4baperture_shortPass225.45 s
gemma3-4baperture_streamPass3.72 s
gemma3-4bcontextPass65,66467.543 s
gemma3-4bgateway_contextPass84,04488.05 s
gemma3-4bgateway_short_via_system_aPass3.16 s
gemma3-4bgateway_short_via_system_ePass
gemma3-4bgateway_short_via_system_fPass4.15 s
gemma3-4bgateway_short_via_system_gPass6.06 s
gemma3-4bquickPass155.163 s
gemma3-4bstreamPass24.691 s
gemma3-4bvisionPass3067.318 s
gemma3-4bvision_contextPass65,87672.476 s
gemma3-4bvision_reversePass3065.831 s
gpt-oss-20bcontextPass65,716216.594 s
gpt-oss-20bgateway_contextPass84,099315.83 s
gpt-oss-20bgateway_shortInconsistent
gpt-oss-20bquickPass7221.603 s
gpt-oss-20bstreamPass31.957 s
gpt-oss-20btoolsPass26.096 s
nomic-embed-textcontextExcluded below 65K, incomplete2,048
nomic-embed-textquickExcluded below 65K, pass4.178 s
qwen3-14bcontextExcluded below 65K, incomplete1800.06 s
qwen3-14bquickExcluded below 65K, pass1535.809 s
qwen3-14bstreamExcluded below 65K, pass35.43 s
qwen3-14btoolsExcluded below 65K, pass87.723 s
qwen3-8bcontextExcluded below 65K, excluded
qwen3-8bquickExcluded below 65K, pass1521.293 s
qwen3-8bstreamExcluded below 65K, incomplete900.01 s
qwen3-8btoolsExcluded below 65K, excluded
qwen3.5-9bcontextPass65,662287.984 s
qwen3.5-9bgateway_contextPass75,648319.36 s
qwen3.5-9bgateway_shortPass2172.14 s
qwen3.5-9bquickPass1524.635 s
qwen3.5-9bstreamPass143.157 s
qwen3.5-9btoolsPass30.395 s
qwen3.5-9bvisionPass7527.756 s
qwen3.5-9bvision_contextPass65,640398.797 s
qwen3.5-9bvision_reversePass7528.645 s

System D

Model route labelCheckOutcomeInput tokensRequest duration
gemma-4-12b-itcontextPass65,590275.395 s
gemma-4-12b-itexact_digest_aperture_65kPass72,057300.67 s
gemma-4-12b-itexact_digest_broker_shortPass3430.74 s
gemma-4-12b-itquickPass2115.05 s
gemma-4-12b-itstreamPass14.722 s
gemma-4-12b-ittoolsPass33.869 s
gemma-4-12b-itvisionPass12056.315 s
gemma-4-12b-itvision_contextPass65,690282.174 s
gemma-4-12b-itvision_reversePass12029.978 s
gemma3-4bcontextPass65,58463.564 s
gemma3-4bexact_digest_65k_recallFailed67,25262.07 s
gemma3-4bquickPass155.151 s
gemma3-4bstreamPass22.552 s
gemma3-4bvisionPass3068.276 s
gemma3-4bvision_contextPass65,87667.575 s
gemma3-4bvision_reversePass3065.651 s
gpt-oss-20bcontextPass65,637189.07 s
gpt-oss-20bexact_digest_aperture_65kPass72,104245.94 s
gpt-oss-20bexact_digest_broker_shortPass8415.96 s
gpt-oss-20bquickPass7215.431 s
gpt-oss-20bstreamPass31.052 s
gpt-oss-20btoolsPass23.65 s
nomic-embed-textcontextIncomplete2,048
nomic-embed-textquickPass2.798 s
qwen3-14bcontextIncomplete40,939872.209 s
qwen3-14bquickPass1536.021 s
qwen3-14bstreamPass33.491 s
qwen3-14btoolsPass82.471 s
qwen3-8bcontextIncomplete1800.07 s
qwen3-8bquickPass1519.283 s
qwen3-8bstreamPass19.401 s
qwen3-8btoolsPass65.054 s
qwen3.5-9bcontextPass65,579258.048 s
qwen3.5-9bexact_digest_aperture_65kPass81,051324.07 s
qwen3.5-9bexact_digest_broker_shortPass2994.48 s
qwen3.5-9bquickPass1527.16 s
qwen3.5-9bstreamPass28.62 s
qwen3.5-9btoolsPass28.129 s
qwen3.5-9bvisionPass7525.047 s
qwen3.5-9bvision_contextPass65,640369.477 s
qwen3.5-9bvision_reversePass7527.602 s

System E

Model route labelCheckOutcomeInput tokensRequest duration
gemma-4-e4b-itcontextPass65,59049.086 s
gemma-4-e4b-itquickPass2123.911 s
gemma-4-e4b-itstreamPass28.136 s
gemma-4-e4b-ittoolsPass56.756 s
granite-4.0-h-tinycontextPass65,566
granite-4.0-h-tinyquickPass3510.408 s
granite-4.0-h-tinystreamPass27.798 s
granite-4.0-h-tinytoolsPass43.304 s
granite-4.2-3bcontextPass65,5891014.03 s
granite-4.2-3bquickPass2014.569 s
granite-4.2-3bstreamPass6.948 s
granite-4.2-3btoolsPass56.376 s
qwen3-embedding-0.6bcontextPass32,76720.387 s
qwen3-embedding-0.6bquickPass149.592 s
qwen3.5-0.8bcontextPass16,4299.128 s
qwen3.5-0.8bquickPass17452.417 s
qwen3.5-0.8bstreamPass11.163 s
qwen3.5-0.8btoolsPass39.214 s
qwen3.5-2bcontextPass65,57930.343 s
qwen3.5-2bquickPass1512.509 s
qwen3.5-2bstreamPass26.165 s
qwen3.5-2btoolsPass42.056 s
qwen3.5-4bcontextPass65,57953.787 s
qwen3.5-4bquickPass1526.736 s
qwen3.5-4bstreamPass26.02 s
qwen3.5-4btoolsPass57.293 s
qwen3.5-4bvisionPass7210.09 s
qwen3.5-4bvision_contextPass65,63744.88 s
qwen3.5-4bvision_reversePass729.96 s

System F

Model route labelCheckOutcomeInput tokensRequest duration
gemma-4-e4b-itcontextPass65,59098.443 s
gemma-4-e4b-itquickPass2127.51 s
gemma-4-e4b-itstreamPass28.042 s
gemma-4-e4b-ittoolsPass73.891 s
granite-4.0-h-tinycontextPass65,59919.692 s
granite-4.0-h-tinyquickPass3543.818 s
granite-4.0-h-tinystreamPass27.296 s
granite-4.0-h-tinytoolsPass75.377 s
granite-4.2-3bcontextPass65,589145.179 s
granite-4.2-3bquickPass2015.703 s
granite-4.2-3bstreamPass35.482 s
granite-4.2-3btoolsPass52.539 s
qwen3-embedding-0.6bcontextPass32,76720.656 s
qwen3-embedding-0.6bquickPass148.122 s
qwen3.5-0.8bcontextPass16,42913.326 s
qwen3.5-0.8bquickPass17445.22 s
qwen3.5-0.8bstreamPass13.266 s
qwen3.5-0.8btoolsPass40.825 s
qwen3.5-2bcontextPass65,57961.282 s
qwen3.5-2bquickPass1516.738 s
qwen3.5-2bstreamPass25.29 s
qwen3.5-2btoolsPass47.444 s
qwen3.5-4bcontextPass65,57993.753 s
qwen3.5-4bquickPass1533.039 s
qwen3.5-4bstreamPass25.658 s
qwen3.5-4btoolsPass71.731 s
qwen3.5-4bvisionPass7043.053 s
qwen3.5-4bvision_contextPass65,63584.749 s
qwen3.5-4bvision_reversePass7027.518 s

System G

Model route labelCheckOutcomeInput tokensRequest duration
gemma-4-e4b-itcontextPass65,59092.696 s
gemma-4-e4b-itquickPass2138.329 s
gemma-4-e4b-itstreamPass43.549 s
gemma-4-e4b-ittoolsPass66.616 s
granite-4.0-h-tinycontextPass65,59969.777 s
granite-4.0-h-tinyquickPass3533.17 s
granite-4.0-h-tinystreamPass31.751 s
granite-4.0-h-tinytoolsPass63.338 s
granite-4.2-3bcontextPass65,589100.849 s
granite-4.2-3bquickPass2023.355 s
granite-4.2-3bstreamPass28.75 s
granite-4.2-3btoolsPass44.226 s
qwen3-embedding-0.6bcontextPass32,76723.055 s
qwen3-embedding-0.6bquickPass148.924 s
qwen3.5-0.8bcontextPass16,42916.74 s
qwen3.5-0.8bquickPass17504.813 s
qwen3.5-0.8bstreamPass15.095 s
qwen3.5-0.8btoolsPass36.672 s
qwen3.5-2bcontextPass65,57976.731 s
qwen3.5-2bquickPass1520.949 s
qwen3.5-2bstreamPass25.194 s
qwen3.5-2btoolsPass37.552 s
qwen3.5-4bcontextPass65,57990.807 s
qwen3.5-4bquickPass1541.84 s
qwen3.5-4bstreamPass40.812 s
qwen3.5-4btoolsPass54.999 s
qwen3.5-4bvisionPass7029.619 s
qwen3.5-4bvision_contextPass65,63587.496 s
qwen3.5-4bvision_reversePass7026.283 s

How I tested Hermes viability

I used a synthetic marker near the beginning of a long prompt and asked for the marker after the filler. The response had to return the expected value. Server-reported input tokens determined the request size. A model answering normally after a large prompt still failed when the opening marker was wrong.

The Qwen3.5 35B progression used numbered filler records, temperature 0, and increasing lengths of 3,800, 6,800, 10,000, and 13,600 records. Those stages returned 69,429, 124,179, 182,579, and 248,279 prompt tokens. The model stayed loaded between stages, which allowed prefix reuse. The separate Qwen3.6 near-limit checks reported zero cached tokens.

The 0.8B long prompt repeated river stone lantern orchard circuit velvet compass marble 8,400 times between an opening answer key and a final recall question. The native run sent think:false, num_ctx:131072, stream:false, and keep_alive:0. The OpenAI-compatible route used reasoning_effort:"none". The broker enforced nonthinking mode for its route, so gateway callers did not need a client override.

Tool, vision, and release checks

Tool tests checked the request and the answer after a tool result returned. One simple test used add_numbers(7, 11) and expected 18. The Qwen3.5 35B test used lookup_square and expected 49. GPT-OSS used an inventory lookup and had to incorporate the returned inventory result.

Vision checks used red and blue image questions, reversed image order, and long prompts containing image colors plus opening and ending markers. The Qwen3.5 35B test used a 256 × 256 red PNG. The broker needed an image-content conversion fix before this request passed. The System E 4B long vision test required both markers and the ordered colors to survive the input.

I checked GPU memory, model residency, temperatures, host-memory pressure, OOM events, and GPU faults around the long runs. The Qwen3.5 35B guard also checked release after a controlled interruption. Later client-cancellation and queued-request checks exercised the broker path. Two queued requests prove request handling under the tested load, rather than two independent simultaneous GPU backends.

Reading the performance results

Request durations include long-input prefill and the returned answer. They are not generation tokens per second. First-content delay matters for streaming, and cached-prefix progressions need their own interpretation.

The successful larger System A and System C follow-up runs used dedicated inference windows with mining inactive. Models unloaded after those requests. Mining restoration across all seven systems happened at the end of the test window. These results describe model service during an inference window, rather than simultaneous mining and inference.

Backend profiles used in the tests

Choose the profile attached to the workload you want to reproduce. Quantization, runtime context, cache type, reasoning mode, and GPU placement all affect the result.

System and modelTested backend profile
A, Qwen3.5 35B-A3B Q4_K_MOllama 0.34.2, f16 KV cache, both 16GB RTX 5060 Ti cards, 64 GiB host RAM, 262,144 runtime context for the large progression. Native requests used think:false, temperature 0, streaming, and five-minute keep-alive between stages. Gateway requests used the broker and LiteLLM. No request output cap.
A, Qwen3.8 27BOn-demand llama.cpp through the broker and LiteLLM, 262,144 runtime context, one inference slot, Q4 K/V cache, both RTX 5060 Ti cards. The 66,007-token request used no output cap.
A, Qwen3.6-35B-A3B UD-Q4_K_XLStrata 0.1.48, 131,072 context, INT8 KV cache, one selected GPU, 55 GiB process-group memory limit, 30-minute runtime limit, lazy load, 60-second idle unload. Pilot long answer: 217 output tokens. Near-limit gateway answer: 11 output tokens, no request output cap.
A, Qwen3.8-Flash-Next UD-IQ4_XSStrata 0.1.48, 98,304 context, Q4 KV cache, 8 GiB resident expert cache, both RTX 5060 Ti cards. Pilot memory limit 52 GiB, later route 54 GiB. Pilot long answer: 10 output tokens. Earlier larger context/cache combinations stopped at memory limits.
A, Granite 4.2 8BQ6_K GGUF weights, llama.cpp pooled worker, 131,072 context, Q4_0 K/V cache, --n-predict -1. Long request used temperature 0, streaming usage, and no output cap.
A, DeepSeek Coder V2 16BQ4_0 GGUF weights, Ollama 0.34.2, two RTX 5060 Ti cards, 64 GiB host RAM. Separate f16, Q4_0, and Q8_0 cache trials used the runtime contexts shown in the comparison table. No request output cap.
B, C, D, audited Ollama serviceOllama 0.34.2, 131,072 context, parallelism 1, one loaded model, queue size 128, keep-alive 0, Flash Attention, Q4_0 KV cache.
B, Qwen3.5 9B gateway pilotLiteLLM route timeout 1,800 seconds, zero retries, no context or output-token cap. Both sentinels retained at 72,265 input tokens. The separate mining-recovery check passed.
C, Qwen3.5 0.8BQ8_0 weights on one RTX 2000E Ada at a 30 W power profile. Runtime context 131,072. Native think:false, OpenAI-compatible reasoning_effort:"none", no output cap. The broker alias pinned the runtime context and enforced nonthinking mode.
C, Gemma 4 12B-ITSingle-GPU Ollama profile, 131,072 runtime context, streamed and non-streamed Aperture requests without an output cap. The direct Aperture run peaked at 75 C and 30.64 W under the configured 30 W profile, then unloaded.
D, Qwen3.5 9B, Gemma 4 12B-IT, GPT-OSS 20BExact installed artifacts tested through Aperture, 131,072 runtime context, full residency on one GPU, natural completion without a request output cap.
E, F, G, llama.cpp chat workersBuild 11669, 99 GPU layers, parallelism 1, Flash Attention, Q4_0 K/V cache, --n-predict -1. Runtime context varied by model family.

The recorded service profiles describe their own runtime configurations. The separately tested System A f16-cache Qwen3.5 35B profile does not inherit the Q4_0 cache settings of the smaller Ollama systems.

Model fingerprints for the new retained-input runs

These model identifiers distinguish the tested artifacts from other downloads or aliases with similar names.

ArtifactQuantizationRecorded digest or file SHA-256
Qwen3.5 35B-A3B Ollama tagQ4_K_M72aac7c28be8ff9b81c2a270eb489c88e6d822a76ec0cb7bf34d965768848567
Qwen3.5 0.8B base Ollama tagQ8_0de63045f29755d4721c09d54c9b45c2dadb644f4fd7d604d4cac90d96049971c
Granite 4.2 8B GGUF fileQ6_K5ad3d67f6fe09a448031029bead7f6a088697ca2787c0c5640bf964c59df1a21

Ollama manifest digests and weight-file SHA-256 values identify different objects. Match the identifier to the artifact type in the table.

What I would run with Hermes

I would make Qwen3.5 35B the main high-context route on the two-card RTX 5060 Ti system. Its 239,153-token gateway retention result, separate tool and vision passes, and verified request release make the choice stronger than a model advertised with a large context window. I would keep Qwen3.8 27B available for the faster matched 66K response and Qwen3.6 available when using one card matters.

On the RTX 2000E Ada systems, I would choose the verified System C Gemma 3 4B route for the tested long-input response workload. I would trial the nonthinking Qwen3.5 0.8B route for narrow recall and extraction. Larger Gemma, Qwen, and GPT-OSS routes suit work where their tested four-to-five-minute initial response is acceptable. I would exclude the failed System D Gemma 3 route from the selection.

For the 8GB RTX 3060 Ti and RTX 3070 cards, I would start with Qwen3.5 2B or 4B. Their 65K text results and the 4B image checks support a useful starting configuration without dedicating the two 16GB cards to every request. Flash Next’s memory pressure and DeepSeek Coder V2’s incomplete 65K behavior make them weaker defaults on the tested profiles.

The tests support these model and system choices for specific workflows. Retained input, a correct tool round trip, image recognition, and clean release each answer a different part of Hermes viability. A dependable setup needs the behaviors used by your agent, with enough context left for the answer and tool traffic.