Skip to content

Repository files navigation

Gus

Gus

Everything your team decides, kept and chased.

The company brain your team and its agents share. Gus writes down what your calls and threads settle, answers the next person who asks, and follows up on what nobody closed. Ask him in Slack, Discord or Telegram. Your engineers get the same answers from a brain/ folder in their own repo, in Claude Code, Cursor and Codex. Nothing new for anyone to open.

License Docs Cloud

Early days: v0.x, and breaking changes are still on the table.


$ where do our deploys go?

  Deployment strategies typically vary by organization...

The answer exists. It's in a Slack thread, someone's head, and a doc nobody can find. Put it in Gus instead, and every agent on the team gets this:

$ where do our deploys go?

  staging on merge, prod on tag. The runbook is in Engineering.

And the half nobody automates:

Gus  → @sam the Postgres upgrade from Tuesday's call is still open.
       You said Friday. Done, or move it?

Nobody writes a wiki. Gus builds one out of the work you already do, and it stays yours: cancel your account and the brain is still sitting in your repo.

Gus in the web app, asking to be pointed at the team's apps

Install

docker run -d --name gus -p 8080:8080 -v craftspace-data:/data ghcr.io/abuaboud/gus

Open http://localhost:8080. The first account to sign in owns the install, so sign in before you share the URL. That sign-in goes through craftspace.app by default: add -e BROKER_URL= to keep it on your own box, and take the six-digit code out of docker logs gus.

A public deployment sets CRAFTSPACE_URL to its real hostname and puts a proxy in front for TLS; the docs cover both.

Pages, spaces and the MCP endpoint work straight away, with keyword search. Semantic search switches on with an OpenRouter key, and Gus needs that plus a sandbox, both below.

What it does

Feature What it is
Pages and playbooks Plain markdown as a wiki. A space is the permission boundary.
An MCP endpoint per org Read, write and search pages, record decisions, drive your connected tools. OAuth, no key to paste.
Gus Answers from your context in the app, Slack, Discord and Telegram, then goes and does the next thing.
Connections Vendor tokens sealed at rest. One gateway module can unseal them, and it imports nothing else in the app.
Brain as Code A repo's brain/ folder is the page tree, so context ships in a pull request.
No database to install Postgres runs inside the process as PGlite. No Redis, no object store, no cluster to provision.

Meet Gus

Gus, an Iris clay figure with a filing card tucked into his head

Gus is the one who remembers. He carries the work. You press send.

Mention him in a thread and he shows what he read before he answers. A direct message runs as you, with your permissions. A channel runs as its own identity, with an explicit list of page subtrees it can see, so a support channel does not quietly read the whole brain.

When he needs a human he opens an errand: one ask, one person, one deadline. Not a silent block, and one errand out per person at a time. Every errand ends. He is very polite about this and completely impossible to outlast.


What you need

What Why
An OpenRouter key Never one vendor's assistant: pick the model, bring your own key. Use a plain inference key: Settings checks it when you paste it and rejects a provisioning key, or one with no spend left.
A Vercel Sandbox Token, team id, project id. Gus runs his harness there and nowhere else.

Both go in Settings once the install is up. Until then Gus reports himself as unconfigured rather than answering badly.

Self-hosted vs. cloud

Same application, and this repository is the whole of it, MIT.

Self-hosted craftspace.app
Pages, spaces, MCP, Gus, connections
Brain as Code
Your data on your box
Built-in notetaker
Managed upgrades

The notetaker joins calls from a recording account that can't be handed on, so it lives on the hosted version only. Meeting notes from a Granola, Avoma, Fathom or Attio connection sync either way. Everything else, you run.

Develop

npm install
npm run dev     # server on :8080, web on :5173, /api proxied across
npm -w @craftspace/server test   # the integration suite

The server starts its own PGlite under ~/.craftspace, and the tests bring up a throwaway database per worker. Nothing to install first, and rm -rf on this checkout takes no data with it.

Package What it is
packages/app/server The Fastify app: /api, /mcp, auth, the sealed gateway, the embedded database
packages/app/web The React client
packages/shared Zod schemas and wire contracts shared by both

CODING_STYLE.md is the rulebook every change follows and DESIGN.md is the visual one. CONTEXT.md is the domain language: what a space, a page, a connection and an errand each mean here.

Contributing

Issues and pull requests welcome. Start with CONTRIBUTING.md, or SECURITY.md if you found something that shouldn't be filed in public.

License

MIT, see LICENSE. The name Gus, the Gus artwork and the Craftspace name and logo are not covered by it, see TRADEMARK.md.

About

Gus: the company brain your team and its agents share. Self-hostable, MIT licensed.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages