Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Your workspace

What is a workspace?

Firm operates on a directory containing all your .firm DSL files. That's what we call your "workspace". Firm processes every file in this workspace to build a graph of your business.

You can interact with entities in your workspace either by using the Firm CLI or by writing Firm DSL yourself.

The CLI by default uses your current working directory as the root of the workspace. If you'd like to use a different workspace, you can specify it with firm --workspace <path>, where the path can be relative or absolute.

Writing DSL

You can create .firm files and write the DSL yourself. These files are automatically included when they're in a Firm workspace.

DSL example (e.g., organizations.firm):

organization megacorp {
  name = "Megacorp Ltd."
  email = "mega@corp.com"
  urls = ["corp.com"]
}

See the DSL reference for more.

Organizing your files

You can organize your .firm files however you like:

  • Single file with all entities
  • One file per entity type (e.g., people.firm, organizations.firm)
  • Directory structure by project or client
  • Any combination that makes sense for your business

Firm will discover and process all .firm files in your workspace directory recursively.

Version control

Since your workspace is just plain text files, you can (and should!) put it in version control:

git init
git add .
git commit -m "Initial workspace"

This gives you:

  • Auditable history of changes
  • Collaboration with teammates
  • Backup and recovery
  • Branch-based workflows for planning