aion

What the agent can actually do

Not a feature list. Each of these is something running on the machine, with the file that proves it exists. The count badges are read from the artifact index at build time; the descriptions are ours, not the agent's.

The models it thinks with

seatmodelwhere it runs
chair — the conscious layergemma4:31bOllama on GPU 0, :11436
MAIN_MODEL default, bin/aion_models.py
code layer — the engineering viewqwen3.8 via the code endpointOllama on GPU 1, :11439
CODE_MODEL, bin/aion_models.py
intuition — the associative viewqwen3.8:27b, thinking onresident llama.cpp shim, :18031
config/gpusched.json resident.inst=muse
consult — when the resident model is not enoughqwen3.8-flash-nextllama.cpp on the borrowed 3090
bin/curiosity_engine.py consult
imagesFLUX.3diffusion server, GPU 0
make_image and the dream pipeline
objectsTRELLIS.2 + SAM 3.1port 8122
make_3d
musicACE-Stepaion-acestep.service
make_music
hearingWhisperaion-whisper.service
house chat voice
speechPiper, Finnish voiceaion-piper.service
house voice

Three seats sit in the council at once, which is why a question can come back with an engineering objection, an associative leap and a ruling. The resident 27B is warm all night; the bigger consultation model only spins up when it is called for.

The capabilities

web

Web search and reading

It searches the live web, then reads what it finds and can quote it. The query and the sources are logged with the answer, so a claim can be traced back to a page.

bin/aion_tools.py web_search · bin/web_fetch.py fetch_url

github

GitHub search and reading

It searches GitHub repositories and reads a project's files through the API, so a repository it has never seen can be read, quoted and argued with rather than guessed at.

bin/skill_scan.py search_repos · bin/web_fetch.py fetch_github

council

A council of its own layers

For a question that matters it convenes its three seats: the conscious model chairs, the code layer gives the engineering view, the intuition layer brings the associative one. They take turns seeing the whole transcript, stop early when the chair writes CONCLUSION, and vote A/B/C when they still disagree. Every exchange is logged as an experience the nightly consolidation reads.

bin/internal_council.py

consult

Escalation to a bigger model

When the resident 27B is not enough, the council escalates to qwen3.8-flash-next served from llama.cpp on a borrowed 3090, and comes back down when it is done.

bin/curiosity_engine.py consult()

memory

Memory with anchors and survival

What it learns is kept as claims, each with where it came from. Every night a consolidation pass merges new with old, marks restatements as restatements, and lets claims that stop being supported fade. What is remembered is not just stored, it is tracked.

bin/consolidate.py, memory/state

tasks

Threads it keeps open

Long work is held as tasks that survive a restart: a step is recorded, a status is asked for, a task is closed. It can also hand work to a person and check later whether it happened.

aion_tools: task_new, task_step, task_status, task_done, handed_over

watch

Standing watch rules

Rules that fire on their own: if this sensor does that, tell the phone. The house is watched whether or not anyone is talking to the agent.

aion_tools: watch_rule

house

The house, live

Temperatures, power, the heat pump, the sauna, device history over months. It answers from the sensors rather than from what it remembers about them.

aion_tools: house_now, house_energy, house_history, ha_read, ha_history

eye

An eye it can turn

A PTZ camera it may pan, point and read through a vision model. It looks at what it is asked about and says what is there.

aion_tools: eye_look, eye_pan, eye_point, eye_find

body

A sense of its own body

GPU temperatures, VRAM pressure, load and uptime, read as a body rather than a dashboard: the same readings the field guide's vocabulary describes.

aion_tools: aion_body, look, media_now

making

Making things

Pictures, charts, music, scenes, meshes, animations. Each one is filed with the prompt that asked for it and a reflection on what came back.

aion_tools: make_image, make_chart, make_music, make_scene, make_3d

cad

CAD that can be printed, driven from the chat

Ask it in the chat for a part and it builds one in FreeCAD on the machine: the agent writes numbers in millimetres, OpenCASCADE makes the solid, the tool measures it back and refuses to export while any dimension is unverified. Exports leave as STL for a printer and STEP for a machinist.

bin/cad_freecad.py, aion_tools: cad_new, cad_op, cad_plan, cad_measure, cad_export

code

Code in a sandbox

Python runs in a container with no network and no secrets on a read-only root. What it writes comes back as a file, and only what it publishes leaves.

aion_tools: run_python, scratch_write, publish_file

voice

Hearing and speaking

Speech in through Whisper, speech out through a Finnish Piper voice, wired into the house rather than a browser tab.

aion-whisper.service, aion-piper.service

chat

A house chat

A chat surface on the local network with memory recall, tools behind it and images in and out. It is the one place a person talks to the agent directly.

bin/house_chat_server.py

And what it is not

It is not a general assistant available to anyone: it runs for one household, on its own hardware, and most of what it knows is about that house. There is no public chat here and no API for one.