Project configuration

sixb.config.ts configures the services your project uses: where data is stored, how background work runs, and which authentication and AI providers are available.

Configure your project

Export the result of createSixb() as sixb. This local configuration matches the Sixb starter:

TS
// sixb.config.ts
import { mkdirSync } from "node:fs"
import { LocalBlobStorage } from "@sixb/blob-local"
import { createSixb, InMemoryBroker, InMemoryQueues } from "@sixb/core"
import { DuckLakeStorage } from "@sixb/ducklake"
import { SqliteStorage } from "@sixb/sqlite"

mkdirSync(".sixb/lake", { recursive: true })

export const sixb = createSixb({
  id: "my-app",
  storage: new SqliteStorage({ path: ".sixb" }),
  lakeStorage: new DuckLakeStorage({
    catalog: { type: "duckdb", path: ".sixb/lake/metadata.ducklake" },
    dataPath: ".sixb/lake/data",
  }),
  blobStorage: new LocalBlobStorage({ basePath: ".sixb/blobs" }),
  broker: new InMemoryBroker(),
  queues: new InMemoryQueues(),
})

The CLI waits for the configuration to load before starting your project. bun sixb dev starts the API, Atlas, your app, and background workers together.

Required providers

Each project supplies these five providers:

OptionStores or handles
storageObjects, relationships, telemetry, users, and execution history.
lakeStorageDatasets and their versions.
blobStorageUploaded files and other binary content.
brokerEvent delivery between parts of your project.
queuesBackground jobs such as syncs, pipelines, and workflows.

Choose implementations from Infrastructure providers. In-memory messaging works locally because everything shares a process. Production services need persistent providers that they can share.

Optional services

Add services as your project needs them:

OptionPurposeGuide
authSign-in and sessions.Authentication
modelsLanguage and embedding models for AI and semantic search.AI
sandboxesExecution environments for agent tools.Sandboxes
toolsYour project's custom agent tools.Tools & skills
logger, observabilityLog output and capture settings.Logging
onErrorSend failures to your monitoring service.Failure notifications
connectorConnectionsProtect stored OAuth credentials.OAuth connectors

Language and time zone

Set the language and time zone your project's users work in:

TS
export const sixb = createSixb({
  id: "my-app",
  locale: "fr-FR",
  timeZone: "Europe/Paris",
  // ...providers
})
OptionFormatDefaultUsed by
localeBCP 47 language tag"en"The language your app pages declare, and the fallback language of the built-in chat.
timeZoneIANA time zone"UTC"Cron schedules without their own time zone, and the local time the agent works in.

Invalid values fail at startup. The agent knows the current date and time in this time zone. In chat, the user's browser time zone and language take precedence, so each user sees times in their own zone. Atlas stays in English.

Environment variables

Bun loads your project's .env file. Read credentials and environment-specific settings through process.env; keep secrets out of source control.

TS
import { PostgresStorage } from "@sixb/pg"

const connectionString = process.env.DATABASE_URL
if (!connectionString) throw new Error("DATABASE_URL is required")

const storage = new PostgresStorage({ connectionString })

Use this provider as the storage option. Set the same project ID, provider credentials, and OAuth encryption key across production services. Restart local development after changing environment variables.

Project definitions

Sixb discovers exported definitions from your project's folders, including ontology/, connectors/, actions/, and security/. You do not need to list each definition in the configuration.

See Project structure for the folder conventions. Use projectRoot only when discovery should start somewhere other than the current working directory. Inside handlers, use the provided sixb context to work with project data.

Search docs

Search the documentation