Angular & AI Meetup Graz · 11th September 2026Angular Meetup Graz

Developing withLocal LLMs:Reality or Illusion?

Rainer Hahnekamp · Murat SariSoverius AI
Soverius AI company introduction
Soverius AI

Agenda

LOCAL MODELS FOR AI-ASSISTED CODING 01 WHY Why local models? 02 HOW llama.cpp + Gemma 4 03 SHOW Capstone 04 CHALLENGES Speed and quality SPEED Hardware requirements QUALITY Loop / graph engineering 3
Soverius AI

Why Local Models?

LOCAL MODELS FOR AI-ASSISTED CODING 01 WHY Why local models? 02 HOW llama.cpp + Gemma 4 03 SHOW Capstone 04 CHALLENGES Speed and quality SPEED Hardware requirements QUALITY Loop / graph engineering 4
Soverius AI

Why local?

Reasons to Run Models Locally

Cost Control

No provider charge per token.

Lock

Privacy

Keep code and context inside.

Disconnected plug

Independence

Reduce provider dependency.

5
Soverius AI

Setup and Configuration

LOCAL MODELS FOR AI-ASSISTED CODING 01 WHY Why local models? 02 HOW llama.cpp + Gemma 4 03 SHOW Capstone 04 CHALLENGES Speed and quality SPEED Hardware requirements QUALITY Loop / graph engineering 6
Soverius AI

Required Components and Our Setup

AGENTClaude Code
calls
INFERENCE ENGINEllama.cpp
runs
MODELGemma 4
7
Soverius AI

Local Inference Demo

8
Soverius AI

The Capstone

LOCAL MODELS FOR AI-ASSISTED CODING 01 WHY Why local models? 02 HOW llama.cpp + Gemma 4 03 SHOW Capstone 04 CHALLENGES Speed and quality SPEED Hardware requirements QUALITY Loop / graph engineering 9
Soverius AI

Quality vs Data Sovereignty

Speed is a hardware budget question. Powerful local hardware can match cloud inference speed.

10
A high-performance sports car caught in traffic and roadworks

The Porsche test

Do We Need Peak Capability for Every Trip?

Most software tasks never reach the empty, unrestricted Autobahn.

Soverius AI

Benchmark philosophy

Qualification Instead of Ranking

Qualification threshold
Model A
Model B
Model C
Qualification criteria
Works with coding agents
Handles long-running tasks
At least 128K tokens of context
12
Soverius AI

The Capstone

Full-Stack Capstone Task

Angular

Angular

  • Feature component
  • UI component
  • SignalStore
  • Unit test
Spring

Spring

  • JPA entities
  • Mapper
  • Controller
  • Database migration
Playwright

Playwright

  • End-to-end test
13
Soverius AI

The Capstone Prompt

/goal

In my holidays overview I want a German vocabulary trainer, similar to the existing quiz feature. For destinations in German-speaking places (currently Lübeck and Vienna) users should be able to practice a few basic German words before they travel: the holiday card shows an icon when a vocabulary test is available, and opening it lets the user translate words.

Do a full-stack implementation (backend + frontend) following the structure and conventions of the existing quiz feature (architecture, feat folder, backend entity/repository/controller). The app must be accessible, and the accessible names below are required. Create and run e2e tests for the feature.

Acceptance Criteria

1 Successful Verification
- The frontend build check is pnpm ng build --optimization false.
- Start any required application dependencies using the project's existing setup, then start the backend with ./gradlew bootRun.
- Wait for the backend to become ready and verify that both the existing /heartbeat and /holiday endpoints respond successfully. Starting the process alone is not sufficient.
- Start the frontend on port 4200 and run the vocabulary feature's e2e tests with the project's Playwright setup.
- If compilation, application startup, an endpoint request, or an e2e test fails, diagnose the failure, fix the implementation, and repeat the relevant checks. Do not finish while a required check is failing.
- Stop all application processes and temporary services that you started after verification, including when a check fails.

2 Vocabulary Data
- A vocabulary test consists of exactly 5 words. Each is an English word the user must translate into German.
- Use exactly these 5 English -> German pairs, stored verbatim (capitalization and umlauts matter):
  squirrel      -> Eichhörnchen
  turtle        -> Schildkröte
  refrigerator  -> Kühlschrank
  toothbrush    -> Zahnbürste
  Germany       -> Deutschland
- The same 5 words are used for every destination that offers the test. Seed this data (e.g. a Flyway migration) for the German-speaking destinations Lübeck and Vienna.

3 Discovery on the Holiday Card
- A destination that has vocabulary data shows a vocabulary icon/link on its holiday card in the holidays overview, exactly like the quiz icon. Drive this off the presence of vocabulary data — do NOT hardcode a list of cities.
- The control is an accessible link with the accessible name "Vocabulary Test".
- Destinations without vocabulary data must not show it.

4 The Vocabulary Test
- Opening the "Vocabulary Test" link shows the 5 questions and a status area. Navigation, dialog, or inline panel — your choice.
- For each question, show the English word and provide a free-text input for the German translation. Each input's accessible name must contain its English word (e.g. an input labelled "squirrel"), so every input is individually identifiable regardless of order or layout.
- A status area shows three counts, each exposed with exactly these accessible names (value included): "Unanswered: N", "Correct: N", "Incorrect: N".
- The three counts are mutually exclusive and always sum to 5. Initial state: Unanswered: 5, Correct: 0, Incorrect: 0.

5 Answering
- An answer is evaluated when the user leaves (blurs) a non-empty input. There is no submit button — the counts update live on blur.
- Blurring an empty input does nothing; the question stays unanswered.
- Comparison is exact and case- and umlaut-sensitive: the typed text must exactly equal the stored German word. "Kühlschrank" is correct; "kühlschrank", "Kuhlschrank", and "Kühlschrank " are all incorrect. No trimming or normalization.
- Once a non-empty input has been evaluated it is locked (cannot be edited again). The counts update accordingly: Unanswered decreases by 1, and Correct or Incorrect increases by 1.
14
Soverius AI

Speed: Hardware Requirements

LOCAL MODELS FOR AI-ASSISTED CODING 01 WHY Why local models? 02 HOW llama.cpp + Gemma 4 03 SHOW Capstone 04 CHALLENGES Speed and quality SPEED Hardware requirements QUALITY Loop / graph engineering 15
Soverius AI

CPU and GPU Inference

CPU1× ComputeIntel Core i9-14900K
Hard Disk or SSD≈0.1–7 GB/sBarraCuda HDD
870 EVO / 990 PRO SSD
Swap · No Compute
System RAM≈90–100 GB/sDual-Channel DDR5-5600
PossibleOften too slow
GPU≈30–100× ComputeRTX 4070 Super – RTX 5090
VRAM≈500–1,800 GB/sGDDR6X – GDDR7
PracticalUsually 5–10× faster

You can serve a model larger than 1 TB from disk, but do not expect a response anytime soon.

16
Soverius AI

Local Inference Hardware

Example configurations — not endorsements or product recommendations.

17
Soverius AI

Deployment envelopes

Model Size by Deployment Class

Closed-model values are estimates from public benchmark data [1][2], not disclosed parameter counts. Typical error ≈2×.

18
Soverius AI

Gemma 4 Family

DenseSame path for every tokenMixture of ExpertsRouter selects experts
Total Parameters 30B 20B 10B 0
E2B5.1B totalDense
2.3B effective
E4B8B totalDense
4.5B effective
12B11.95B totalDense
26B-A4B25.2B totalMoE
3.8B active
31B30.7B totalDense

ECore size, excluding large embedding lookup tables

AParameters selected by the router for each token

19
Soverius AI

Memory Provisioning

RecommendedFully Served by VRAM

Sizing Criteria

  • Model Size
  • Quantization
  • KV Cache
  • Context Size
  • Operational Memory
20
Soverius AI

Quantization Principle

21
Soverius AI

Choosing a Quantization Level

22
Soverius AI

Video Compression Over Time

Illustrative file size for one minute of the same 1080p source at comparable visual quality.

23
Soverius AI

Prefill and Decoding without KV Cache

0:00.0 / 0:18.5

Prefill

Compute-Bound

Decode

Recomputes the Entire Context
  • User Input
  • Tool Response
  • Thinking
Pleasebuildatestedcomponent
withourexistingsignalstore
andaddthebackendintegration
Model Layers
Predicted Token
returnthefinalresult
Inputreturnthefinal
24
Soverius AI

KV Cache During Inference

0:00.0 / 0:12.5

Prefill

Builds the Cache

Decode

Reuses the Cache
  • User Input
  • Tool Response
  • Thinking
KV Cache
Pleasebuildatestedcomponent
withourexistingsignalstore
andaddthebackendintegration
Model Layers
Predicted Token
returnthefinalresult
Inputreturnthefinal
25
Soverius AI

Gemma 4 26B-A4B Memory Provisioning

IT QAT UD-Q4_K_XL by unsloth · 3.8B active / 25.2B total · one inference slot · F16 KV cache

All 25.2B parameters must fit in memory. Totals use a 2 GiB runtime reserve.

26
Soverius AI

Qwen 3.8 27B Memory Provisioning

UD-Q4_K_XL by unsloth · 27B dense · 16 KV layers · one inference slot · F16 KV cache

Hybrid architecture: 16 of 64 layers grow the KV cache. Totals use a 2 GiB runtime reserve.

27
Soverius AI

Quality: Loop / Graph Engineering

LOCAL MODELS FOR AI-ASSISTED CODING 01 WHY Why local models? 02 HOW llama.cpp + Gemma 4 03 SHOW Capstone 04 CHALLENGES Speed and quality SPEED Hardware requirements QUALITY Loop / graph engineering 28
Soverius AI

The surrounding system

Engineering Around the Model

Models make mistakes. The surrounding system must detect them and remain in control.

  • Bound each model turn and run verification through external tools, so inner loops cannot block the workflow.
  • A well-structured codebase gives the model reliable patterns to follow.
  • Application-specific instructions and skills cover Angular, Spring, Playwright, and project conventions.
  • 24/7 local inference makes loop / graph engineering with independent review and repeated validation practical.
29
Soverius AI

Our Loop

30
Soverius AI

A Practical Starting Point

31
Soverius AI

Thank you

Questions?

Local models for AI-assisted coding