Skip to content

Introduction

Umpteenth runs the recurring chores you would otherwise brief a colleague on, such as a weekday digest or the report you assemble by hand every Monday for the umpteenth time. You describe the chore once in plain language, and an LLM agent does it in a throwaway container, on a schedule or whenever you trigger it. You host it on your own server with your own model provider, and it records what each run did and what it cost.

A new job has nothing but your instruction, so its first run is an Explore run, where the agent works out the steps from scratch. Umpteenth then hands the run’s transcript to a model in a step called reflection, which writes down what worked as short learnings, plus toolkit scripts for the steps a run repeats. Once reflection has saved any of those, runs are Assisted: the agent starts from the learnings and calls the toolkit scripts as tools instead of working the steps out again.

After three successful Assisted runs that do the work and take the same steps, the job can graduate. Reflection writes a main script that does the whole job, and from then on runs are Scripted: Umpteenth executes the script and checks its result, with no agent involved. A scripted run spends no model tokens unless the script or its checks ask a model for a judgment call, such as writing a summary. If a check fails, the agent takes over in the same sandbox and finishes the job.

Example: weekly stale PR report$0.10$0.20$0.30$0.40Graduatedthe main script runs, no agent$0.42$0.37$0.19$0.11$0.08$0.00$0.00$0.00runtime#14m 12s#23m 40s#31m 58s#41m 05s#552s#63s#73s#82sExploreAssistedScripted
Cost per run for the first eight runs of an example job. Reflection adds to the playbook after each run, so the agent needs fewer turns, and from run 6 the main script does the job without the agent for $0.00.

The exact rules are on How jobs learn.

A job is your instruction plus its settings: when it runs, which model it uses, what it can reach and how much a run may cost. Each execution of a job is a run, and the job’s schedule, a webhook call, the API or Run now on the job page starts one. Every run gets its own sandbox, a fresh container that Umpteenth creates for the run and destroys when the run ends. The playbook holds what the job has learned so far, in numbered versions. Each run has a mode (Explore, Assisted or Scripted), and the job page shows the mode of the next run.

Umpteenth makes the agent’s model calls from its own container, and it connects to HTTP MCP servers (the tool servers that link the agent to services such as GitHub or Slack) from there too, so their keys and logins stay out of the sandbox. Job secrets do enter the sandbox as environment variables, and MCP servers that you run as a command (stdio servers) start inside it under a user of their own, with their secrets.

Umpteenth, on your hostSandbox, one per runModel providersAnthropic, OpenAI…HTTP MCP serversGitHub, Linear…Agent looppicks the next stepBrokerone token per runKeys and tokensnever enter the sandboxShell and filesbash, files, secretsump CLIfor the job’s scriptsstdio MCP serversa user of their ownpromptsruns commandsMCP, modelsyour tokens
The agent loop runs on the host and sends commands into the sandbox. Model API keys and HTTP MCP credentials stay with Umpteenth on the host, and job secrets enter the sandbox as environment variables.

With Docker, Umpteenth creates sandboxes through the host’s Docker socket, which amounts to root access on the host, so read Security before you open an instance to others.