Downcity

Downcity

Build worlds where agents live, work, and collaborate.

Downcity is a set of open-source kits for running agents and turning them into products. Agent Harness provides the runtime; City, Federation, SDKs, and UI kits make products easy to package, operate, and scale.

An Agent ecosystem where residents live inside distinct product Cities that share capabilities through Federation.

Choose the layer you want to start from.

agent.tsScroll to execute
tsx01 / 07
01import { Agent, Workspace } from "@downcity/agent";02import { createOpenAI } from "@ai-sdk/openai";03 04const agent = new Agent({05  id: "assistant",06  workspace: new Workspace({ path: process.cwd() }),07  model: createOpenAI().responses("gpt-5"),08});09 10const session = await agent.sessions.create();11const turn = await session.prompt({ query: "Start working" });12const result = await turn.finished;13console.log(result.text);14 15await agent.dispose();
Runtime
workspace./project
agentgpt-5
sessioncontext
turnquery
resulttext
The next turn starts here

Architecture

Products run in the user's environment. Federation provides shared capabilities.

A creator organizes agent roles, tools, skills, and product interfaces into a City. The City runs on the user's computer or server and stores sessions, tasks, and work artifacts. When an agent needs models, accounts, usage, or other shared services, it connects to Federation.

FederationModels · Services · Auth · UsageCreatorUserCityUser's environmentA City runs in the user's environment and connects to Federation when it needs shared capabilities.
The creator designs the product and agents. The City runs and stores work data in the user's environment, connecting to Federation for models, authentication, service routing, and usage management.

Features

From agent runtime to product.

Compose the harness and productization kits around your use case: give agents a reliable runtime, then add the product boundary, shared services, and interfaces your users need.

01

Define the agent's workspace

Set the boundaries for files, tools, and permissions so the agent knows where it works, what it can do, and where its output belongs.

02

Keep work continuous

Sessions preserve conversations, tool calls, task state, and results so agents can continue from existing context.

03

Give agents the ability to act

Use tools, skills, and plugins so agents can search, write, execute, record, and connect to the services a product needs.

04

Keep work moving

Use tasks, memory, and schedules so agents can follow up, check progress, and complete long-running work beyond a single conversation.

05

Organize agents by role

Configure agents with different roles inside one City. They share a product boundary and services while handling creation, analysis, review, or operations.

06

Connect interfaces and stay in control

Interact through CLI, Console, SDKs, or product interfaces while inspecting status, approving actions, and managing the runtime.

Product shapes

Build a City around the work.

Organize agents, capabilities, and product interfaces around a clear field of work, turning each City into a product that keeps running.

01

Software creation City

Agents take on development, review, testing, and release roles to move software from idea to delivery.

02

Research and knowledge City

Agents continuously gather information, analyze material, organize knowledge, and turn research into useful outcomes.

03

Team operations City

Agents handle monitoring, support, coordination, and recurring work to keep teams running smoothly.

04

Personal work City

Agents are organized around a person's files, tools, and daily workflows while the user controls data and runtime.

Create a City. Put agents to work.

Install Downcity, create an agent product, and start its runtime.

Create and start
npm install -g downcity

downcity agent create ./my-city
downcity federation use
downcity start
downcity agent start