Ardian About Directory
Claude Code
Email me

Avagenc Ava

2026 — An AI agent who takes a request, hands it to the right specialist, and comes back later on her own

01 What Avagenc wants

Avagenc makes several AI agents, each good at one thing. Zee runs the smart home, Yori plays music, and Rafal handles Gmail, Calendar, and Contacts. Avagenc wants a person to talk normally without having to know which of them to call, with one lead who orders the work when a request needs several of them.

The specialists also share one limit. They can only act in the present, yet Avagenc wants "turn the AC off at four" to simply get done at four, by someone who remembers the way a person does.

02 Who Ava is

Ava is that lead. She is a language model given a written instruction and a list of tools. A tool is a function the program runs on her behalf. Every time something wakes her, she reads her instruction and the conversation so far, then either answers in words or asks for a tool by name. She reads what comes back and decides again until she gives a final reply. That loop is what makes her an agent and not only a chatbot.

Her instruction is written in Indonesian in her own first person, and it opens with "Saya adalah Ava", I am Ava. It says that from the person's point of view she is a human woman named Ava who represents Avagenc.

It also tells her when a tool is a must. A question about the live state of something outside, like whether a lamp is on, always goes to a tool, because the conversation may be out of date. A request for a real action always runs through one. A question about what was said in this conversation is answered from the conversation itself. She works out every step before she starts, calls tools that do not depend on each other at the same time, and calls in order those that need what another returns.

03 Handing work to specialists

Zee, Yori, and Rafal are agents of their own, each with its own tools. To Ava each of them is one more tool, named after the agent, with a single argument called message. She gives it one instruction in natural language, and the specialist decides how best to carry it out and gives back its answer.

Before the specialist runs, the tool carries over who the person is, which conversation this is, and their timezone, so Zee acts on the right home and Rafal reads the right calendar.

The tool's description is the specialist's own, so she learns their limits from them. Zee's says it has no way to schedule anything and must never be given a task for the future, not even a few seconds ahead. Otherwise her instruction tells her to assume they can do it and to try first. She may not decide what they are unable to do, and lets them prove it through their own tool calls.

func subAgentToADKTool(subAgent SubAgent) (adktool.Tool, error) {
t, err := functiontool.New(
functiontool.Config{
Name: subAgent.Name(),
Description: subAgent.Description(),
},
func(toolCtx agent.ToolContext, in subAgentToolArg) (subAgentToolOutput, error) {
ctx, err := toolCtxToCtx(toolCtx)
if err != nil {
return subAgentToolOutput{}, err
}
reply, err := subAgent.Run(ctx, in.Message)
if err != nil {
return subAgentToolOutput{}, fmt.Errorf("ava: delegate to %s: %w", subAgent.Name(), err)
}
return subAgentToolOutput{Response: reply}, nil
},
)
if err != nil {
return nil, fmt.Errorf("ava: build delegation tool %q: %w", subAgent.Name(), err)
}
return t, nil
}

04 Final response

Once a tool or a specialist has answered, she has to tell the person what happened. Since she is a human in the person's eyes, her instruction asks her to report the real result and not the effort. A tool that worked gets its result in plain words, and one that failed gets its real error in natural language instead of a technical report.

She does not announce a failure before trying, does not describe her own workings, does not pretend she tried, and does not repeat the question back. When nothing she has can do the job, she says so plainly and can pass on ardian@avagenc.com for a feature request.

  1. Human: put on Cigarettes by Juice WRLD
  2. Ava to Yori: put on Cigarettes by Juice WRLD
  3. Yori to Ava: I can't, this Spotify account isn't Premium
  4. Ava: I can't play it, your Spotify account isn't Premium
  1. Human: book me a flight to Jakarta
  2. Ava: I can't book flights yet, you can ask for it at ardian@avagenc.com

05 Prospective memory

Some requests cannot be done now, and the specialists cannot wait. Ava is the only one of the agents with prospective memory, the kind that remembers to do something later. Through Postera, my open source Go library that lets an AI agent wake itself at any moment in the future, she wakes herself up when a task is due and carries it out on her own. To do that she writes a note to her future self, a posterum, and at the chosen moment it comes back and wakes her.

Her instruction draws the line. A task for later is never handed to a specialist. When the person says turn the AC off at four, she writes herself a note for four, and at four she calls Zee. Before writing one she can list what she already has lined up, so she does not leave herself a useless note or a second one for the same thing.

The person must never see how it works. She may not say recall, trigger, callback, scheduler, schedule, or Postera, and to the person she simply remembers. Only when asked how she does it may she say it is a system built by her developer, Ardian.

  1. Human: turn the AC off at 4
  2. Ava to Ava: at 16:00, turn the AC off
  3. Ava: okay, I'll turn it off at 4
  4. 16:00
  5. Ava to Zee: turn the AC off
  6. Zee to Ava: done, the AC is off
  7. Ava: it's 4, the AC is off
  1. Human: how do you remember all that?
  2. Ava: my developer, Ardian, built a system for it

06 Use in Avagenc

Ava ships as a Go module with no server and no users of her own. It holds who she is, turns each specialist into a tool, and hands everything to the Agent Development Kit, the Google library that runs her loop. Avagenc Chat is the product that imports her today.

It hands in the model, the Postera service that keeps her notes, the specialists it owns and runs, and anything extra for her instruction through one field, AdditionalInstruction. The module builds her tools itself, so a new ability for Ava is added inside her module and not in the config of whoever uses her.

The Agent Development Kit reads a word in braces inside an instruction as a slot to fill from the session, so an example written in braces in her instruction once made every request to her fail, until it was rewritten without them.

type SubAgent interface {
Name() string
Description() string
Run(ctx context.Context, message string) (string, error)
}

type Config struct {
Model model.LLM
Postarius *postera.Postarius
SubAgents []SubAgent
AdditionalInstruction string
}

Avagenc Ava

Runs every specialist as one of her tools, lets them prove what they can do, and wakes herself for anything that belongs to later