Skip to content

Commit 6a57ebd

Browse files
simplycubed-code[bot]simplycubed-code[bot]SimplyCubed Code
authored
Closes #106: Rewrite HOME.md and Setup.md for external customer-facing audience (#107)
Co-authored-by: simplycubed-code[bot] <simplycubed-code@users.noreply.github.com> Co-authored-by: SimplyCubed Code <noreply@simplycubed.com>
1 parent a339f4d commit 6a57ebd

2 files changed

Lines changed: 97 additions & 61 deletions

File tree

README.md

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![An agent that runs in your GitHub, not ours. Open source. Your runners, your secrets. A human merges.](docs/assets/simplycubed-code.png)](https://simplycubed.com/code?utm_source=github&utm_medium=readme&utm_campaign=code)
44

5-
An autonomous coding agent that lives inside your own GitHub. You file an issue, it opens a pull request, and a human decides whether to merge.
5+
SimplyCubed Code is an autonomous coding agent you install into your own GitHub. Your team files an issue, the agent prepares a pull request in your repository, and one of your reviewers decides whether it ships.
66

77
> Beta, at `v0.1.9`. Product overview: [simplycubed.com/code](https://simplycubed.com/code?utm_source=github&utm_medium=readme&utm_campaign=code). See [Status](#status).
88
@@ -16,25 +16,37 @@ That runs the whole loop, including the model and your own gate. It makes no Git
1616

1717
`simplycubed init --workflow` also writes a self-test into your repository. Dispatch it once and it checks, in your own runner, that the App token resolves to a bot, that it can read what it needs, and that it is denied Actions administration. The install fails if that denial does not hold. Delete the workflow once it passes.
1818

19-
## What it is
19+
## Product overview
2020

21-
SimplyCubed Code turns a GitHub issue into a pull request without a person writing the code. A human files an issue describing the change; the agent implements it against the repo's own quality gate and opens a pull request for a human to merge. When a human then requests changes on that pull request, a fixer role reads the feedback, addresses it, re-runs the gate, and pushes back to the same branch for another look.
21+
SimplyCubed Code turns a GitHub issue into a proposed code change inside your own environment. Your team keeps the repository, runners, secrets, and branch protection rules. The agent does the implementation work, but it never merges its own pull requests.
2222

23-
It proposes. It does not dispose. The agent never pushes to `main` and never merges its own work. A person is always the one who clicks merge.
23+
For a customer team, the model is simple:
2424

25-
The part that makes it different from hosted coding agents is where it runs. Everything happens inside your own GitHub Actions, on your runners, using your minutes and your secrets. SimplyCubed hosts nothing, runs no server on your behalf, and never sees your code or your credentials. Compare that to tools like Copilot's coding agent, Devin, or Codex cloud, which run the model against your code on someone else's infrastructure.
25+
- Your developers describe work in GitHub issues.
26+
- SimplyCubed Code implements against the repository's existing quality gate, such as `make check`.
27+
- The agent opens or updates a pull request for human review.
28+
- Your team keeps final control over merge, release, and production access.
29+
30+
The product is designed for teams that want autonomous implementation without handing their source code or GitHub credentials to a hosted vendor runtime. Everything runs in your own GitHub Actions environment, on your runners, using your secrets.
31+
32+
## Why teams use it
33+
34+
- It runs inside your GitHub, not SimplyCubed's infrastructure.
35+
- It uses your repository's existing quality gate instead of inventing its own definition of done.
36+
- It is built for a human-review workflow, not auto-merge automation.
37+
- It keeps permissions narrow: the agent can propose changes, but not deploy or merge them.
2638

2739
## How it works
2840

29-
The loop is issue to pull request, driven entirely through GitHub.
41+
The customer workflow is issue to pull request, driven entirely through GitHub.
3042

3143
1. A human files an issue and applies the `sc:go` label. That label is the only thing a person applies to start the work.
3244
2. The agent implements the change on a branch and runs the repo's own quality gate, using the gate's output to guide each retry until it passes or it stops and asks for a human.
3345
3. Once the gate passes, the agent opens a pull request and hands it back to a human.
3446
4. A human reviews. If they request changes, a fixer role reads the feedback, makes the changes, re-runs the gate, and pushes back to the same pull request for another look. Only feedback left against the current head is addressed, so the loop never re-litigates a comment it already handled.
3547
5. A human merges. The agent does not.
3648

37-
An automated reviewer runs before step 4 if you turn it on (`review: true`, off by default). It comments; it never approves and never merges. Step 5 is a human either way.
49+
An automated reviewer can also run before human review if you turn on `review: true`. It comments on the change; it does not approve and it does not merge.
3850

3951
### Label lifecycle
4052

@@ -78,11 +90,11 @@ flowchart LR
7890

7991
A plain comment in the conversation box is not a review. To run the fixer from a review, submit it through **Files changed → Review changes**. Every path checks that the person has write access before anything else happens.
8092

81-
## Running in your own GitHub
93+
## Deployment model
8294

83-
The whole thing runs on GitHub Actions, event-driven, with no server and no VM for SimplyCubed to operate. When you install the app and file issues, the work executes on your runners inside your organization.
95+
SimplyCubed Code is deployed into your GitHub organization. There is no SimplyCubed-hosted control plane managing your repositories for you. When your team installs the GitHub App and adds the workflow, the work runs on your runners inside your account.
8496

85-
### What it can do to your repo, and what stops it
97+
### What it can do, and what stops it
8698

8799
It can open a pull request against a branch. That is the strongest action available to it.
88100

@@ -95,20 +107,20 @@ What stops it, roughly in order of how much you should trust each one:
95107
5. Neither engine's "dangerous" bypass flag is set. When a change cannot be made under those constraints, the run stops and a human finishes it. [Why](docs/faq.md).
96108
6. No deploy credentials, and no path to production. Your branch protection rules decide what happens once the pull request exists.
97109

98-
What this buys you:
110+
What that means for customers:
99111

100112
- Your code stays in your repos. SimplyCubed never receives it.
101113
- Your model provider keys, the GitHub App's private key, and any other secrets stay in your GitHub secret store. They are read by your own Actions runs and never transit our infrastructure.
102114
- It does not use the engines' "dangerous" bypass flags, and does not receive a GitHub token in the model's shell. When a change cannot be made under those constraints, the run stops and a human finishes it. See the [FAQ](docs/faq.md).
103115
- The agent holds no deploy credentials and has no path to production. The most it can do is open a pull request against a branch. A human and your branch protection rules decide what happens next.
104116

105-
Setup files are written locally by `simplycubed init` and merged by a human, because the runtime holds no `workflows` permission and cannot add its own workflow files.
117+
Setup files are generated locally by `simplycubed init` and then merged by a human, because the runtime holds no `workflows` permission and cannot add or update workflow files on its own.
106118

107119
The GitHub App identity is `simplycubed-code[bot]`. That bot is the single audit signal for everything the agent does.
108120

109121
## Getting started
110122

111-
Start with the adopter quickstart in [docs/setup.md](docs/setup.md). It covers the shipped path from CLI install to the first issue-driven pull request, including where the Azure endpoint and key live for local CLI runs versus GitHub Actions.
123+
Start with [docs/setup.md](docs/setup.md). It walks through customer installation in a repository you control, from CLI install through the first issue-driven pull request.
112124

113125
## Installation
114126

@@ -123,9 +135,7 @@ That prints `0.1.7`. Pre-1.0 releases follow semver with the usual caveat: minor
123135
versions may still change behavior. Pin the tag you have validated rather than
124136
floating on `@latest`.
125137

126-
Then follow the [quickstart in `docs/setup.md`](docs/setup.md) to write the repo
127-
config, add the caller workflow, set the Azure values, and open the first pull
128-
request.
138+
Then follow the [setup guide in `docs/setup.md`](docs/setup.md) to add the repository config, install the GitHub workflow, set the required credentials, and run the first issue through the system.
129139

130140
## Install into your GitHub
131141

docs/setup.md

Lines changed: 71 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
# Setup
22

3-
This is the adopter path that exists today: install the CLI, write the repo
4-
config and caller workflow into your own repository, set the Azure values in the
5-
right places, and let GitHub Actions drive issues to pull requests.
3+
This guide shows how to install SimplyCubed Code in a repository you control so
4+
it can turn issues into pull requests inside your own GitHub environment.
65

7-
## Quickstart
6+
You will:
87

9-
Prerequisites:
8+
- install the `simplycubed` CLI
9+
- generate the repository config and GitHub workflow files
10+
- connect your GitHub App and model credentials
11+
- run a one-time self-test
12+
- hand the first issue to the agent
1013

11-
- Go installed locally so you can run `go install`.
12-
- `gh` authenticated against the repository you want to onboard.
13-
- Write access on that repository.
14-
- An Azure OpenAI endpoint and API key.
14+
## Before you begin
15+
16+
You need:
17+
18+
- Go installed locally so you can run `go install`
19+
- `gh` authenticated against the repository you want to onboard
20+
- write access on that repository
21+
- an Azure OpenAI endpoint and API key
22+
23+
## Install and configure
1524

1625
1. Install the CLI:
1726

@@ -20,83 +29,100 @@ go install github.com/simplycubed/code/cmd/simplycubed@v0.1.9
2029
simplycubed version
2130
```
2231

23-
2. In the target repository, generate the starter files and labels:
32+
2. In the target repository, generate the setup files and labels:
2433

2534
```sh
2635
simplycubed init --workflow
2736
```
2837

29-
That writes three files and creates the `sc:*` labels through your local `gh`
30-
auth:
38+
That creates the `sc:*` labels through your local `gh` session and writes three
39+
files into your repository:
3140

3241
- `.github/simplycubed.yml`, the repository config
33-
- `.github/workflows/simplycubed.yml`, the caller workflow
34-
- `.github/workflows/simplycubed-selftest.yml`, an install check you run once
35-
and then delete The files are local
36-
changes in your repository; nothing is merged or installed remotely for you.
42+
- `.github/workflows/simplycubed.yml`, the workflow that runs SimplyCubed Code
43+
- `.github/workflows/simplycubed-selftest.yml`, a one-time installation check
44+
45+
These are local file changes in your repository. Nothing is merged or installed
46+
remotely for you.
3747

3848
3. Edit `.github/simplycubed.yml` and set a real gate that is already green on
39-
your default branch. A minimal example is:
49+
your default branch. A minimal customer setup looks like this:
4050

4151
```yaml
4252
labelPrefix: sc
4353
gate: make check
4454
```
4555
46-
### Run it locally first
56+
### Optional: prove it locally first
4757
48-
Before wiring Actions, you can prove the loop works from your terminal with the
49-
same config file:
58+
Before wiring GitHub Actions, you can prove the loop works from your terminal
59+
with the same config file:
5060
5161
```sh
5262
export AZURE_OPENAI_ENDPOINT="https://<resource>.openai.azure.com"
5363
export AZURE_OPENAI_API_KEY="<key>"
5464
simplycubed run owner/repo#N --repo-dir .
5565
```
5666

57-
4. In the GitHub repository settings, add:
67+
4. Create and install the GitHub App identity, then add the required repository
68+
settings.
69+
70+
Create the `simplycubed-code` GitHub App with `Contents`, `Issues`, and `Pull
71+
requests` permissions only, disable the webhook, set install visibility to `Any
72+
account`, and install it on the repository.
73+
74+
Then add these repository settings:
5875

5976
- Variable: `SIMPLYCUBED_GH_APP_CLIENT_ID`, the App Client ID, the `Iv23` string on the App settings page
6077
- Secret: `SIMPLYCUBED_GH_APP_PRIVATE_KEY`
6178
- Variable: `AZURE_OPENAI_ENDPOINT`
6279
- Secret: `AZURE_OPENAI_API_KEY`
6380

6481
The Actions runtime authenticates as the `simplycubed-code` GitHub App, so the
65-
App ID and private key are required. Create the App with `Contents`, `Issues`,
66-
and `Pull requests` permissions only, webhook disabled, install visibility `Any
67-
account`, then install it on the repository. Store the private key as the full
68-
PEM contents, including the `-----BEGIN` and `-----END` lines.
82+
App ID and private key are required. Store the private key as the full PEM
83+
contents, including the `-----BEGIN` and `-----END` lines.
6984

7085
Each job mints its own installation token for that repository, so the agent
71-
authors commits, pull requests, and comments as `simplycubed-code[bot]`, and its
72-
pull requests receive their own CI runs. A personal access token is not an
86+
authors commits, pull requests, and comments as `simplycubed-code[bot]`, and
87+
its pull requests receive their own CI runs. A personal access token is not an
7388
alternative: the reusable workflow accepts App credentials only.
7489

7590
5. Commit the generated config and workflow files in the target repository, open
7691
a setup pull request, and merge it yourself. Setup files are written locally by
7792
`simplycubed init` and merged by a human, because the runtime holds no
7893
`workflows` permission and cannot add its own workflow files.
7994

80-
6. Check the install before trusting it:
95+
6. Run the installation self-test before you rely on the workflow:
8196

8297
```sh
8398
gh workflow run simplycubed-selftest
8499
```
85100

86-
That runs in your own runner and reports whether the App token resolves to a
87-
bot, whether it is correctly denied Actions administration, whether a commit is
88-
possible, and whether the engine can start there. Delete the workflow once it
89-
passes; normal operation goes through the App and the `sc:go` label.
101+
That runs in your own environment and reports whether the App token resolves to
102+
a bot, whether it is correctly denied Actions administration, whether a commit
103+
is possible, and whether the engine can start there. Delete the self-test
104+
workflow once it passes; normal operation goes through the App and the `sc:go`
105+
label.
90106

91107
7. File an issue that describes a small change and apply the `sc:go` label.
92108

93109
8. Wait for the workflow to open a pull request. Review it like any other PR:
94110

95-
- Merge it yourself if it is good.
96-
- Or request changes; the fixer loop will address feedback on the current head
97-
and push back to the same branch.
111+
- merge it yourself if it is good
112+
- or request changes; the fixer loop will address feedback on the current head
113+
and push back to the same branch
114+
115+
That is the first end-to-end customer path: issue -> PR -> human merge.
116+
117+
## Day-to-day use
118+
119+
Once setup is complete, your team uses SimplyCubed Code through normal GitHub
120+
workflows:
98121

99-
That is the first end-to-end path: issue -> PR -> human merge.
122+
- apply `sc:go` to an issue to start implementation
123+
- review the pull request the agent opens
124+
- request changes if needed; the fixer loop pushes updates back to the same PR
125+
- merge it yourself when it meets your standards
100126

101127
## Where each value goes
102128

@@ -170,9 +196,9 @@ Use the same endpoint and key in both places, but wire them differently.
170196

171197
For local runs such as `simplycubed run owner/repo#123`, the CLI reads:
172198

173-
- `AZURE_OPENAI_ENDPOINT` from your shell environment.
174-
- `AZURE_OPENAI_API_KEY` from your shell environment.
175-
- The repo gate and label prefix from `.github/simplycubed.yml`.
199+
- `AZURE_OPENAI_ENDPOINT` from your shell environment
200+
- `AZURE_OPENAI_API_KEY` from your shell environment
201+
- the repo gate and label prefix from `.github/simplycubed.yml`
176202

177203
Example:
178204

@@ -201,16 +227,16 @@ For the hosted-in-your-GitHub path, the caller workflow in your repository
201227
passes:
202228

203229
- `vars.AZURE_OPENAI_ENDPOINT` to the reusable workflow input
204-
`azure-openai-endpoint`.
230+
`azure-openai-endpoint`
205231
- `secrets.AZURE_OPENAI_API_KEY` to the reusable workflow secret
206-
`azure-openai-api-key`.
232+
`azure-openai-api-key`
207233
- `vars.SIMPLYCUBED_GH_APP_CLIENT_ID` to the reusable workflow input
208-
`github-app-client-id`.
234+
`github-app-client-id`
209235
- `secrets.SIMPLYCUBED_GH_APP_PRIVATE_KEY` to the reusable workflow secret
210-
`github-app-private-key`.
236+
`github-app-private-key`
211237

212-
The reusable workflow installs the CLI, exports the endpoint and key for the job,
213-
and runs `simplycubed run` or `simplycubed address`.
238+
The reusable workflow installs the CLI, exports the endpoint and key for the
239+
job, and runs `simplycubed run` or `simplycubed address`.
214240

215241
That hosted path is still Codex-on-Azure only. The reusable workflow installs
216242
the Codex CLI, not the Claude CLI, and its inputs and secrets still require the

0 commit comments

Comments
 (0)