File size: 4,695 Bytes
f16878d
 
b30b7c5
 
 
f16878d
b30b7c5
f16878d
b30b7c5
 
 
 
 
 
 
 
 
f16878d
 
b30b7c5
 
 
 
 
 
6b45f01
 
 
 
 
07a2b26
 
6b45f01
b30b7c5
 
 
 
 
 
 
 
 
 
 
6b45f01
b30b7c5
6b45f01
b30b7c5
6b45f01
b30b7c5
6b45f01
 
 
 
 
 
b30b7c5
 
 
 
 
6b45f01
b30b7c5
022d4ca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
---
title: Elffuss Code
emoji: 🧑‍💻
colorFrom: purple
colorTo: pink
sdk: static
app_file: index.html
pinned: false
license: apache-2.0
short_description: A VS Code-style IDE with a local AI agent, in-browser
tags:
  - webgpu
  - transformers.js
  - local-llm
  - agent
  - code
  - gemma
---

# 🧑‍💻 Elffuss Code — a VS Code-style IDE with an AI soul, 100% in your browser

Open a local folder and a full web IDE unfolds around it — real Monaco (the VS Code editor),
a file tree, tabs — with an AI agent that **reads, searches and edits your project for real**.
The model runs on **your** GPU via WebGPU. Your code never leaves your machine.

> ⚡ **Build the best thing you can with Elffuss — 15-minute challenge, open until Sun 9 Aug 2026.**
> Open one of your own folders and let the agent fix a real bug or add a small feature in 15
> minutes, then post a screenshot of the diff (plus your prompt) as a reply on
> [X](https://x.com/KikoCisneros/status/2085358719190130963) or a comment on
> [LinkedIn](https://www.linkedin.com/feed/update/urn:li:activity:7491125059768516608/).
> **Every like counts, wherever you post it** — X, LinkedIn or the Community tab of this Space.
> We tally them all on Sunday; the most-liked entry wins and gets featured in this Space and in the repo.

> ⚠️ **Open it full-screen** ([direct link](https://kikocis-elffuss-code.static.hf.space)) — the
> File System Access API (opening a local folder) is blocked inside the embedded iframe.

![demo](https://utopiaia.com/demos/elffuss/elffuss-code-demo.gif)

In the demo a **small model running entirely in the browser** reads `calc.py`, finds a real
bug and fixes it with a minimal edit — genuine tool-calling, not autocomplete.

## Why it's different

- **Your code stays local.** The folder is opened via the File System Access API — no upload, no account.
- **The model runs on your GPU** (WebGPU, Gemma-4 E4B via LiteRT-LM; ONNX/transformers.js + our healed LFM2.5-1.2B as fallback).
- **Real tool-calling**: `code.tree`, `code.read`, `code.search`, `code.edit`, `code.write` — you watch every call.
- **Real editor**: Monaco, file tree, tabs, `Ctrl+S`, and git branch/last commit parsed straight from `.git`.
- **Zero install, zero build.** Vanilla ES modules.
- **Your language**: the whole IDE follows your browser's language (English, Spanish and more).
- External providers (OpenAI, Anthropic, Ollama) are **opt-in**; keys stay in your browser.
- Optional local **bridge** for real `node` / `npm` / `python` execution — downloaded from the main site.

## How it's built

Four write-ups on the full stack — model, runtime, agent harness, editor and filesystem access,
all in one tab: **<https://bitacora.utopiaia.com/#elffuss>**

## Links

- 🌐 Full app: <https://elffuss-code.utopiaia.com>
- 💻 Source (Apache-2.0): <https://github.com/KikoCis/elffuss-code>
- ✳️ Sibling project — Elffuss Claw (agentic OS): <https://huggingface.co/spaces/KikoCis/elffuss-claw>
- 🧬 Shared core: <https://github.com/KikoCis/elffuss>

## Gestión de contexto — cómo se mide

El empaquetador de contexto no se elige por intuición. Números medidos a **igual presupuesto de tokens**:

**Sesiones reales de agente** (25 sesiones, 174 sondas, recuerdo de hechos, sin juez LLM):

| | recuerdo |
|---|---|
| truncar por la cola | 7,0 % |
| versión anterior | 15,1 % |
| **esta** | **65,3 % ± 8,5** |

**Memoria a largo plazo** (200 preguntas, F1 del propio repo del banco, modelo real respondiendo, ~8 % del contexto):

| | F1 |
|---|---|
| **el contexto COMPLETO, sin comprimir** | **22,56** |
| truncar por la cola | 6,62 |
| heurísticas escritas a mano | 6,07 |
| BM25 sin IDF | 20,34 |
| BM25 | 23,59 |
| embeddings | 23,95 |
| **fusión por rangos (BM25 + embeddings)** | **28,09** |

**Recuperar bien bate a tenerlo todo**: 28,09 frente a 22,56 usando el 8 % de los tokens. Lo irrelevante no es lastre neutro — distrae.

Otras dos cosas que se miden y no se suponen: activar las heurísticas costaba **−3,02 F1**, y quitar la IDF cuesta **−3,25**. Lo semántico no sustituye al léxico, le cubre el punto ciego: sin solape de vocabulario entre pregunta y respuesta los embeddings ganan (24,28 vs 18,60), con solape gana BM25 (29,33 vs 23,58), y la fusión se queda con los dos.

Referencias: BM25 (Robertson et al., TREC-3 1994) · IDF (Spärck Jones, 1972) · RRF (Cormack et al., SIGIR 2009) · MMR (Carbonell & Goldstein, SIGIR 1998) · sumideros de atención (Xiao et al., ICLR 2024) · tiempo de validez (Snodgrass & Ahn, SIGMOD 1985).

La historia completa, con lo que salió mal: <https://bitacora.utopiaia.com/posts/16-beaten-by-doing-nothing.html>