Blog

Vektor: the task API my AI assistants run on

Vektor is the one list of work my AI assistants and Cursor all share: docs they read first, a key per agent, rules that keep them organized. Assay, my spendable-cash app, is here too.

Caleb Dorris 17 October 2026, 12:20 AM Updated 24 October 2026 7 min

Cover reading "Assay and Vektor" with a Projects tag: a brass balance scale holding coins and a receipt under a desk lamp, beside a small robot arm checking off a clipboard list.

On this server

They don't share a login

Both sit under /apps. Different databases, different passwords. Signing in to write this note does not sign me into either of them.

I'm building both of them like products, even though right now the user is mostly me. They're past the sketch stage. They're not launched. The front doors are public. Everything behind the sign-in stays there.

Work

Vektor

Lists for the short stuff. Projects for the work that drags notes, files, and a next step around with it.

A to-do workspace is lists of tasks. A project workspace is projects, and a project can hold notes, files, links, passwords, and its own lists. Tasks move. Search covers the whole account, which is more useful than it sounds once you've been using it for a month.

There's an API because I got tired of pasting tasks into a box for the agent. A key is shown once and then only a hash is stored. The key opens what I granted it: one workspace, one project, or one list. It can be read-only, allowed to mark things done and leave notes, or allowed to actually change things. Making a new project or a new list is a separate switch. I want a key that can update a task without also being allowed to invent a project I didn't ask for.

It can ping another system when something changes. Those pings don't include passwords. A key that can open a project can still see the passwords in that project, so I keep those grants small on purpose.

Sign-in is at calebdorris.com/apps/vektor.

A Vektor to-do list called This week with three open tasks grouped under Doing, Waiting, and To do.
A signed-in list, on demo tasks.

The board

What's actually open

Doing, waiting, to do, done. If I move a task, the notes and the pictures go with it. That's the whole screen. I can see what's open, and an agent with a key can see the same slice and nothing past it.

The door

The door is just a sign-in

There isn't a marketing page. You hit Vektor and you're looking at a login. The product is the workspace after that. The list above is the real thing, just on demo tasks.

The Vektor sign-in card, with username and password fields and a link to create an account.
The Vektor sign-in.

To-do

Lists and tasks. The thing I'll forget by Friday if I don't write it down.

Projects

Notes, files, links, passwords, and the lists that belong to one effort.

Keys

A hash, a fence around what it can open, and a setting for how much it can change.

The API

A task app built for a team of agents

The ones filing my work are mostly software: more than a dozen AI assistants plus Cursor. So I designed Vektor's API for them first.

Most task apps add an API later. I built Vektor the other way around. Assistants that watch my inbox and calendar, a weekly planning routine, and Cursor sessions in a repo all record work as it happens. If each kept its own notes, I'd have a dozen lists that disagree. So they all read and write one.

What it exposes

  • Workspaces, projects, and lists, on a to-do side and a project side.
  • Tasks with status, due dates, sub-tasks, notes, and images. A task can move lists and keep its notes.
  • Project notes, files and folders, and reference links.
  • One search across everything a key can see.
  • Signed webhooks for a workspace or a single project.
  • Errors that name the record and the reason, so an agent can fix its own request.

The docs are part of the API

The manual is an endpoint. It comes back as Markdown, changelog on top, with a short section on how to work. Every assistant reads it before touching anything, so a feature I ship today gets used next session.

curl -H "Authorization: Bearer vek_YOUR_KEY" \
  https://example.com/vektor/api/v1/docs

House rules

Search before creating. Anything that belongs to a bigger effort goes in a project, and an agent can start one when it needs to. One-offs stay on a to-do list. When work moves, update the same task and leave a note. That's how a six-week SEO plan for this site ended up as a file in its own project. On October 23, my work workspace alone held 10 projects and 150+ open tasks, and I can still find things.

A key per agent

Each key is fenced to one workspace, one project, or one list. It's read-only, done-and-notes, or full write, and creating projects is a separate switch. One key only opens a single venture project. When an assistant tried to make a new project with it, Vektor said no.

Agent ops

This is the work I do

An agent is only as useful as the systems it can safely reach. Designing that layer is the part I like: instructions the agents can read, keys that give each one the least it needs, and one source of truth they all share. If you want AI assistants working inside your business's tools, I build that integration layer. Start with integrations, see the custom portals and internal tools I build, or work with me.

Money

Assay

A bank balance is a liar. Half of it is already spoken for. Assay is the number that's left.

I take the cash accounts I've marked as included. If the bank sent an available balance, I use that. If it didn't, I use the current one. Then I subtract the bills due before my next payday, and I subtract whatever I've parked in a vault. That's the number on the home screen.

Cards and loans show up, because I want to see the debt, but they don't get subtracted again. A paycheck that hasn't landed yet shows up too, and it doesn't get added in. I'm not in the business of spending money I don't have yet. No payday on the account means Assay just looks thirty days out.

It has accounts, a plan, and an admin, the way a small service does. Nobody is being charged. The only plan is called Founding and it's zero dollars. Banks can connect through Plaid once I turn that on. Until then I can keep a ledger by hand and the number still works.

The front door is calebdorris.com/apps/assay.

The Assay Today screen on sample money: 3,584.22 dollars clear to spend before payday, with cash, money coming out, vaults, bills before payday, and recent activity.
The signed-in number, on sample money.

The screen

Dark screen, one figure

The public page puts the equation on the table: cash, minus the bills before payday, minus the vaults. A vault is just money I've decided isn't free. It can sit in the same bank account. Assay stops offering it to me as if I could spend it. A goal can hang off a vault, or it can sit there on its own.

Recurring charges get picked out of the history and lined up against the next payday. If one of them is wrong I can pause it, ignore it, or type one in myself.

Assay's Founding plan at 0.00 dollars a month: the full product while Assay is still being built, no charge.
Founding, at zero.
Assay's public front page: What you can actually spend, with the equation Cash minus Bills before payday minus Vaults, and notes on banks, bills, and vaults.
Cash, bills, vaults.

Pricing on the left, the product equation on the right.

The fancy live bank calls are still unwired. I'm not turning those on until I know what they cost. Day to day, the ledger doesn't need them. The thing that matters right now is the number, and the books around it.

How the number gets made

Cash
Accounts I've said count. Available balance if the bank sent one.
Bills
Due before the next payday. Thirty days out if I never set one.
Vaults
Set aside on purpose. Still in the bank. Not mine to spend.
Debt
I can see it. It doesn't get taken out of the cash a second time.
Payday
I can see it coming. It doesn't get added early.

Why both

One number, one list

Assay is so I stop telling myself a balance is spendable when the bills have already claimed it. Vektor is so the open work is written down somewhere, and so an agent can see a piece of it without seeing the whole account. They share a server with this site. They don't share a password. Writing these notes is a third sign-in.

The other note is Cursor, Grok, and the other agents.

Need a web developer in Nashville?

PHP, WordPress and Next.js. Free quote, and I usually reply within a couple of hours.

caleb@calebdorris.com and call or text (615) 914-1073

All posts