---
title: "Elyra – kodeagenten jeg endte opp med å bygge selv"
url: https://kwhorne.com/blog/elyra-kodeagenten-jeg-endte-opp-med-a-bygge-selv
author: "Knut W. Horne"
published: 2026-05-10T18:13:01+02:00
updated: 2026-05-10T18:16:50+02:00
category: "Tech Insights"
tags: ["AI", "Tech Insights", "Noteworthy News"]
language: nb-NO
---

# Elyra – kodeagenten jeg endte opp med å bygge selv

> Det begynte, som de fleste sideprosjekter pleier å begynne, med en mild irritasjon. Jeg satt i terminalen med en kaffe ved tastaturet og tre forskjellige AI-verktøy åpne i tre forskjellige vinduer. Det ene kunne det ene, det andre kunne det andre, og felles for dem alle var at jeg betalte abonnement og fikk telemetri jeg ikke hadde bedt om på kjøpet.

<p>Så tenkte jeg: hva om jeg bare lagde en agent som gjorde det jeg faktisk ville ha?</p><p>Det er der <strong>Elyra</strong> kom fra. Og nå som den har vokst seg såpass moden at jeg tør slippe den ut i verden, syntes jeg det var på sin plass å skrive litt om hva den er, hva den ikke er, og hvorfor jeg har brukt så mange kveldstimer på den.</p><h2>Hva Elyra er, kort fortalt</h2><p>Elyra er en AI-kodeagent som lever i terminalen. Du installerer den med <code>npm</code>, peker den mot et prosjekt, og så kan den lese, skrive og redigere kode på egen hånd – på samme måte som Claude Code eller andre agenter du kanskje har prøvd.</p><p>Forskjellen ligger i hvordan den er bygget. Elyra er <strong>selv-utvidbar</strong>, lever helt åpent under MIT-lisens, har ingen telemetri som ringer hjem, og lar deg velge mellom over tretti ulike språkmodell-leverandører uten å bytte verktøy.</p><p>Det er, kort sagt, en agent som er din – ikke en tjeneste du leier tilgang til.</p><h2>Tretti leverandører, ingen innelåsing</h2><p>Dette er kanskje det jeg er mest fornøyd med. Du kan kjøre Elyra mot Anthropic den ene dagen, OpenAI den neste, og en lokal modell på maskinen din den tredje. Bedrock, Vertex AI, Mistral, DeepSeek, Groq, OpenRouter, xAI, Cerebras, Together, Fireworks – lista er lang, og den fortsetter å vokse.</p><p>I praksis betyr det at du kan bruke billige modeller til enkle oppgaver og kraftige modeller til de tunge løftene, uten å reskrive konfigurasjonen din. Elyra har til og med en smart modell-ruter som tar dette valget for deg når du ikke gidder å tenke på det selv.</p><p>Du kan også logge inn med eksisterende abonnementer – Claude Pro, ChatGPT Plus, Copilot – med en enkel <code>/login</code>. Da slipper du å sjonglere API-nøkler i <code>.env</code>-filer.</p><h2>Bygget for å bli endret</h2><p>Elyra er det jeg liker å kalle <em>self-extensible</em>. Den har et skikkelig utvidelsessystem der du kan legge til:</p><ul><li><p><strong>Egne verktøy</strong> – funksjoner agenten kan kalle, skrevet av deg</p></li><li><p><strong>Skills</strong> – domenespesifikk kunnskap og arbeidsflyt</p></li><li><p><strong>Prompt-maler</strong> – så du slipper å skrive den samme intro-prompten hundre ganger</p></li><li><p><strong>Temaer</strong> – fordi terminalfargene dine er hellige</p></li><li><p><strong>Hooks</strong> – kjør egen logikk før, under eller etter agentens handlinger</p></li></ul><p>Tanken er at du skal kunne forme agenten til å passe akkurat din arbeidsmåte uten å forke kildekoden. Jeg har for eksempel mine egne skills for Laravel/Livewire-prosjekter og en håndfull hooks som logger til mine egne systemer. Du kan gjøre det samme for Django, Rails, Go, Rust eller hva enn du driver med.</p><h2>Ingen telemetri, og det er et bevisst valg</h2><p>Jeg liker ikke verktøy som titter meg over skulderen. Elyra har derfor null telemetri. Ingen anonyme bruksstatistikker. Ingen "vi sender bare crash-rapporter, lover". Du kan kjøre den helt frakoblet om du vil – så lenge språkmodellen du bruker er lokal, går ingenting ut av maskinen din.</p><p>For meg er dette en hygienesak. Hvis du jobber med kode for kunder, eller bare har et minimum av selvrespekt på vegne av eget verksted, bør verktøyene dine være på din side.</p><h2>Slik kommer du i gang</h2><p>Det enkleste er å installere globalt fra npm:</p><pre><code class="language-bash">npm install -g @elyracode/coding-agent
</code></pre><p>Sett en API-nøkkel for leverandøren du vil bruke:</p><pre><code class="language-bash">export ANTHROPIC_API_KEY=sk-ant-...
# eller
export OPENAI_API_KEY=sk-...
# eller
export GEMINI_API_KEY=...
</code></pre><p>Naviger til prosjektet ditt og kjør:</p><pre><code class="language-bash">elyra
</code></pre><p>Så er du i gang. Beskriv hva du vil ha gjort, så leser, skriver og redigerer agenten kode for deg. Du kan også kjøre <code>/login</code> hvis du heller vil bruke et eksisterende Claude Pro-, ChatGPT Plus- eller Copilot-abonnement.</p><h2>Litt om arkitekturen</h2><p>For den som er nysgjerrig: Elyra består av fem pakker som kan brukes uavhengig av hverandre.</p><p>Pakke Ansvar <code>@elyracode/ai</code> LLM-strømming, modellkatalog, kostnadssporing <code>@elyracode/agent-core</code> Selve agent-loopen, verktøykjøring, sesjoner <code>@elyracode/coding-agent</code> CLI-binæren med innebygde verktøy og prompt <code>@elyracode/tui</code> Terminal-rendring, editor, markdown, keybindings <code>@elyracode/web-ui</code> Web-komponenter (Lit) for nettleser-grensesnitt</p><p>Det betyr at hvis du bare vil bruke LLM-abstraksjonen i ditt eget verktøy, eller embedde agent-loopen i en annen applikasjon, kan du gjøre det uten å dra med deg hele pakka.</p><h2>Hvor det går videre</h2><p>Elyra er fortsatt ung, og jeg jobber jevnt med å gjøre den bedre. Sesjonsforgrening – det å kunne hoppe tilbake til et tidligere punkt og prøve en annen retning – er en av de funksjonene jeg er mest stolt av. Kodebase-minne, der agenten husker arkitektur og avgjørelser på tvers av økter, har spart meg for utallige re-introduksjoner av prosjekter.</p><p>Hvis dette høres ut som noe for deg, er du hjertelig velkommen til å <a target="_blank" rel="noopener noreferrer nofollow" href="https://github.com/kwhorne/elyra">stikke innom GitHub</a>, gi den en stjerne, åpne en issue, eller bare fyre den opp og se om den passer i ditt verksted.</p><p>Og for alt jeg vet, kanskje du ender opp med å bygge en utvidelse jeg selv ikke har tenkt på. Det er litt av poenget.</p>
