Documentation

Python Documentation
NodeJS Documentation

🚧
This section is currently under construction! If you have feedback regarding our documentation or questions please bring it up on our discord server in the #documentation-feedback channel

Core Internal Concepts 🦅 

Thousand Birds is designed to make a few specific things easy and to make anything else at least possible.

Core Runtime - How interacting with the execution works

At its core, Thousand Birds is providing an interface to a reactive agent runtime. We provide client SDKs which make it easy to define executable components and communicate with that runtime.

Diagram demonstrating the Client SDK pushing the definition of an agent graph to the Thousand Birds runtime.
Diagram demonstrating the Client SDK pushing the definition of an agent graph to the Thousand Birds runtime.

This runtime can be run locally, deployed on your own infrastructure, or you can leverage our platform to execute your agents. When first getting started we recommend running this locally, it’s actually bundled right there with the SDK! In each SDK there is an equivalent run_server command which will start the local runtime.

Nodes - The Building Blocks

Nodes are the core building blocks of these Agents. All nodes share a few core properties:

Diagram of a Node, inbound Queries, and target Output Tables
Diagram of a Node, inbound Queries, and target Output Tables

Name

Nodes are expected to be uniquely named. These names can be anything without spaces. You’re free to make them as descriptive as you would like. Names preserve the identity of a given Node and give us a default reference to it. If you intend to track the version of a node, you should maintain or explicitly rename the node.

Queries

Nodes subscribe to inputs from other nodes via Queries. Queries are described using GraphQL.

query NamedNode {
   ExampleInboundNode {
      promptResult
   }
}

Nodes may also have no queries. A node with no queries will run immediately and then never again. Effectively all nodes with no queries are entry points into the graph.

Output Type

Nodes emit their outputs in a structure that they describe as GraphQL types. Some nodes have implicit structures such as Language Model nodes, because they only ever emit a single value.

type LanguageModelNode {
    promptResult: String
}

(optional) Output Tables

Nodes may optionally include a list of Output Tables. These are additional named locations to push output changes from your node.

Advanced Topics 🦉

Custom Nodes

Iterative Development

Language Agnostic

Prompt Template Management

Long Running Execution

Including Component Agents

Things you can do but we’re not sure what you might do with them:

  • Custom nodes still have access to the SDK, meaning that the logic inside of a custom node can mutate the node graph. You can definitely use this to make your agent self constructing or self modifying.