Base Technology Agent Server

(This blurb that I wrote three years ago is a bit stale, but may still have some reasonable relevance today.)

Introducing the Base Technology Software Agent Server

The Base Technology Software Agent Server is an open source JSON-based REST API server which provides a safe environment in which users can develop and deploy software agents for web computing, independent of their own computing devices. Agents have full access to the web,
subject to comprehensive administrative controls for the agent server.

Software agents

Small computer programs which automatically, autonomously, and safely perform tasks on behalf of users with little if any direct supervision.

Software agent model

A simple but sophisticated declarative language for expressing the intent of an agent and how it interacts with other agents, which enables automation by the agent server.

Software agent server

A safe environment in which software agents can run indefinitely and independent of the availability of the user’s own computing devices.

Software agent infrastructure

A very rich level automatic and implicit capabilities provided by the agent server, agent model, library, and scripting language. In essence, much of the traditional logic of an agent is factored out of the individual agents pushed down into the agent server where it can be shared, optimized, managed, and controlled across agents.


Some agents may quickly accomplish a task, but the intent of agents is to work towards long-term goals over an extended period of time, possibly even years.

Persistent state

Individual servers may go down or crash and be restarted, but the agent server
will continuously and automatically store the full internal state of all agents in a persistent
store and restore the state of all agents whenever the server is restarted.

Trust and Transparency

The complete code and state of an agent can easily be examined by the user
or the server administrator at any time, even during execution of the agent.

Data source agents

Specialized agents which periodically poll web resources, extract, analyze,
manipulate, and reformulate raw web data to make it usable by normal agents.

Normal agents

Agents which use declared dependencies to access data, typically the output of other agents, which may be either normal or data source agents, or even hybrid agents.

Quiescence and automatic data dependency propagation

Because data usage between agents is declared, the agent server can automatically propagate fresh output from one agent to all other agents which depend on that agent without the need for an agent to constantly poll data sources.


In addition to heavily factoring code out of agents into the server itself, agent
output is factored so that the output of any agent can be used by any number of other agents,
resulting much less running code.

Automated agent processing loop

Part of the code factoring is that much of the traditional bookkeeping and housekeeping needed for a web-aware application is automatically performed by the agent server based on the agent’s declared intentions.

Agent scheduler

Agents do not exist as processes or even threads, but as virtual objects within
the agent server. Activities such as timers for data source agents and data propagation for normal agents is all performed by a multi-threaded time and event-driven agent scheduler.


Agent developers and server administrators can easily control how often an agent runs and how often its generated output should be propagated to other agents.

Scripting language

A high-level, dynamic, interpretive language for expressing procedural code for specific steps of the logic in a software agent, as well as both simple and complex expressions needed for parameters in the declarative agent language. Based on Java, but simplified and extended.

List, map, and web objects

The essential data structures needed to manipulate structured and semi-structured web data are built into the scripting language interpreter.

String and text manipulation

Sophisticated string and text processing including regular expressions greatly simplify manipulation of string and textual content in web data. As well as conversion between XML/HTML, JSON, CSV, list/map structure, text , and other data formats.


Agents can notify users via email upon completion of tasks or when user input is needed, such as to confirm an operation or make a decision or choice, or simply to inform the user of progress.

Web access manager

Ensure that web resources are accessed efficiently and according to best practice web standards, including caching, administrative access controls, and adherence to robot.txt.

Comprehensive administrative controls

Assure that rogue agents can cause no harm, that buggy agents can easily be detected, what web resources can be accessed, limit notifications, and manage overall server performance.


All agents belong to users with a user ID and password. Administrative controls can lock down individual users.

Stage 0

Preliminary, experimental, pre-release of the agent server intended to get feedback from advanced technology evaluators at organizations which are heavy producers or consumers of large-scale data, the prospective early adopters of software agent technology.

Amazon AWS

Although the current code runs locally, the intent is to put up a public agent server on Amazon AWS ASAP to facilitate evaluation and experimentation.

Stage 1

Once sufficient feedback from evaluators has been received and processed, we will proceed to complete the development and packaging of the production agent server.

Stage 2 and beyond

Support for clusters and grids of agent servers with load balancing, replication, and global persistence of agents. Incremental addition of levels of intelligence to agents.

Business model

The agent server is open source under the Apache License version 2.0. Source and distribution zip are available on GitHub. Income from consulting and contract work. In the future, possibly from operation of agent clusters, agent grids, and advanced agent services.

Three levels of use

  1. Internal, behind the firewall.
  2. Public server but strictly controlled by vendor.
  3. Unrestricted public server — vendors have no control, other than to work with us to assure that the code, the defaults, and the administrative controls behave reasonably toward vendors.


None of the above. Nothing comparable.

The code (100% Java)

Agent blog

Contact or