Uzbūvēju savu lokālo AI asistentu: vadības panelis, kas zina, kas man šodien jādara
Mana darba diena ir izkaisīta pa desmit cilnēm. CRM ar uzdevumiem un rēķiniem, Outlook, Teams, kalendārs, servera piezīmes, piedāvājumi. Katru rītu pirmā pusstunda aizgāja, lai saliktu kopā vienu atbildi: kas man šodien jādara un kas deg.
Pats asistents man jau bija: Claude Code, kas zina manus mērķus, uzdevumus un piezīmes. Tikai tas dzīvoja terminālī. Tāpēc izdomāju tam uztaisīt seju: vadības paneli, kas izskatās nedaudz kā no filmas par nākotni. Tehniski to varēja uztaisīt daudz vienkāršāk, bet ekrānu, ko atver katru rītu, gribas atvērt ar prieku.
Rezultāts ir viens ekrāns, kas atveras līdz ar datoru, rāda visu svarīgāko un ļauj AI asistentam uzdot jautājumus balsī, latviski. Pirmā versija tapa vienā dienā.

Attēlā ir izdomāti klienti, uzdevumi un skaitļi. Īstais panelis izskatās tāpat, tikai ar maniem datiem.
Kas ir uz ekrāna
Panelis ir sadalīts blokos, un katram ir viens uzdevums:
- Ceturksnis. Mani trīs ceturkšņa mērķi un progress procentos līdz termiņam.
- Komanda. Cik procentu no nostrādātajām stundām katram komandas cilvēkam šomēnes ir apmaksājamas.
- Šodien. Zvani, tikšanās un termiņi no CRM atgādinājumiem.
- Aktīvie uzdevumi. Mani uzdevumi pēc termiņa, steidzamākie augšā.
- Nedēļas plāns. Īss saraksts ar ķekšiem, ko var labot uzreiz panelī.
- Brīdinājumi. Atvērtie infrastruktūras punkti, kas gaida lēmumu.
- Vajag tevi. Lietas, kur AI ir sagatavojis darbību, bet bez mana „jā” neko nedara.
- Pēdējie lēmumi. Ko un kāpēc nolēmu pēdējās dienās.
Centrā ir AI kodols: sfēra no mezgliem, kas lēni griežas. Kad asistents domā, pa to skrien gaismas ceļš. Funkcionāli tas neko nedod, bet uzreiz redzu, vai asistents klausās, domā vai pilda uzdevumu.
Kā tas uzbūvēts
Viss ir apzināti vienkārši. Serveris ir viens Python fails bez nevienas papildu bibliotēkas, un saskarne ir trīs statiski faili: HTML, CSS un JavaScript. Nav build soļa, nav datubāzes, nav mākoņa.

Shēmu var lasīt no labās puses uz kreiso:
- Panelis ir tas, ko redzu. Tas ik minūti paprasa serverim jaunāko ainu un sūta atpakaļ manus jautājumus, ķekšus un apstiprinājumus.
- Python serveris salasa visu vienā ainā: manus failus un lokāli saglabātos datus. Tas ir vienīgais, ar ko panelis runā.
- Faili uz diska ir starpnieks starp paneli un asistentu. Tur glabājas CRM momentuzņēmums, komandu rinda, nedēļas plāns un mani lēmumi.
- Claude Code ir vienīgais, kurš iziet ārpus datora. Tas caur MCP lasa un raksta CRM, nodod uzdevumu Claude modelim un rezultātu ieraksta atpakaļ failos.
- Balss strādā pilnībā lokāli. Serveris nodod ierakstu whisper un atbildi Piper, un nekas neaiziet internetā.
Dati nāk no diviem avotiem:
- Mani faili. Jau kādu laiku vedu mapi, ko saucu par savu AI operētājsistēmu. Tajā ir mērķi, lēmumu žurnāls, servera piezīmes, sapulču pieraksti un instrukcijas asistentam. Panelis tos lasa tieši no diska pie katras atsvaidzināšanas.
- CRM. Uzdevumi, stundas, darījumi, atgādinājumi un rēķini. Šeit ir svarīga detaļa: pārlūks CRM nekad nesauc. Datus paņem Claude caur MCP savienojumu un saglabā tos lokāli kā momentuzņēmumu. Panelis rāda, cik svaigi ir dati, un brīdina, ja tie ir vecāki par sešām stundām.
Lai panelis būtu vienmēr pa rokai, tas palaižas fonā līdz ar datora ieslēgšanu un atveras kā parasta Mac lietotne savā logā ar savu ikonu.
Balss latviski, bez interneta
macOS pats latviski nerunā un neatpazīst runu. Tāpēc balss daļa strādā lokāli:
- runas atpazīšana ar whisper.cpp (modelis
large-v3-turbo); - balss ar Piper un latvisko balsi „Aivars”.
Turi mikrofona pogu, pajautā „kas man šodien jādara?” un atlaid. Ieraksts netiek sūtīts nekur ārpus datora. Īsiem, skaidriem teikumiem tas strādā labi, uzņēmumu nosaukumus reizēm jālabo ar roku.
Uz vienkāršiem jautājumiem panelis atbild uzreiz, pat neiesaistot AI: kas jādara šodien un rīt, kas ir nokavēts, cik stundu ir apmaksājamas, kādi ir neapmaksātie rēķini, kas nedēļas plānā. Atbilde parādās ekrānā un tiek nolasīta. Sarakstiem var teikt „nākamais”.
Komandu rinda: raksti, un Claude izdara
Apakšā ir komandu josla. Tur var ierakstīt, piemēram, „izveido CRM uzdevumu: sagatavot aktu līdz piektdienai”. Ieraksts nonāk rindā, un ik 15 minūtes darba laikā Claude to paņem un izpilda: izveido uzdevumu, atgādinājumu vai pieraksta piezīmi. Atbilde parādās panelī.
Šī ir vieta, kur visvairāk domāju par drošību. Automātiskajam režīmam ir ļoti šaurs rīku saraksts:
- tas drīkst lasīt CRM un izveidot uzdevumu vai atgādinājumu;
- tas drīkst rakstīt tikai divos piezīmju failos;
- koda mapes, paroļu faili, tīkls un e-pasta sūtīšana ir aizliegti;
- neskaidru ierakstu tas neizpilda, bet atbild „Nevaru:” ar paskaidrojumu.
Iemesls ir vienkāršs: rindā ierakstītais teksts nedrīkst spēt likt AI mainīt kodu vai atļaujas. Viss, kas iziet ārpus manas mapes, piemēram, e-pasts klientam, nonāk blokā „Vajag tevi” un gaida manu apstiprinājumu.
Kāpēc tikai lokāli
Panelī ir klientu vārdi, rēķini un komandas stundas. Šādiem datiem nav vietas publiskā serverī tikai tāpēc, lai es varētu tos apskatīt skaistākā noformējumā. Tāpēc:
- serveris klausās tikai uz
127.0.0.1un pieņem pieprasījumus tikai no paša paneļa; - CRM dati glabājas lokāli un nenonāk git repozitorijā;
- repozitorijā nav nevienas paroles vai atslēgas;
- balss apstrāde notiek datorā.
Ja dators izslēgts, panelis neeksistē. Man tas der.
Ko es no tā iemācījos
Svarīgākais nebija dizains. Dizains aizņēma maz laika. Visvairāk laika aizgāja, lai izlemtu, kur dati dzīvo un ko AI drīkst darīt bez manis.
AI asistentam vajag kontekstu, nevis vairāk rīku. Panelis ir noderīgs tikai tāpēc, ka aiz tā ir sakārtoti faili: mērķi, lēmumi, piezīmes un instrukcijas. Bez tiem tas būtu vēl viens skaists ekrāns.
Apstiprinājums ir funkcija, nevis šķērslis. Lielākā daļa noderīgo darbību ir sagatavošana: uzdevums, melnraksts, atgādinājums. Pēdējo klikšķi atstāju sev, un tieši tāpēc varu AI uzticēt vairāk.
Nākamais solis ir rīta e-pasta triāža: lai asistents no rīta iziet cauri pastam, sakārto to pēc svarīguma un panelī parāda tikai to, kur jāatbild man.
Ja domā par līdzīgu rīku savam uzņēmumam, vai tas būtu iekšējs panelis, AI asistents komandai vai savienojums ar tavu CRM, uzraksti man.