Compare commits

...

8 Commits

Author SHA1 Message Date
789adcbbbd Merge pull request 'fix(post-suspension): migrate github.com/Molecule-AI refs to git.moleculesai.app (Class G #168)' (#4) from fix/post-suspension-github-urls into main 2026-05-07 20:04:11 +00:00
ae757b0d18 fix(post-suspension): migrate github.com/Molecule-AI refs to git.moleculesai.app (Class G #168)
The GitHub org Molecule-AI was suspended on 2026-05-06; canonical SCM
is now Gitea at https://git.moleculesai.app/molecule-ai/. Stale
github.com/Molecule-AI/... URLs return 404 and break tooling that
clones / pip-installs / curls them.

This bundles all non-Go-module URL fixes for this repo into a single PR.
Go module path references (in *.go, go.mod, go.sum) are out of scope
here -- tracked separately under Task #140.

Token-auth clone URLs also flip ${GITHUB_TOKEN} -> ${GITEA_TOKEN} since
the GitHub token does not auth against Gitea.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 13:02:35 -07:00
b988ba0fca Merge pull request 'docs(contributing): org-wide CONTRIBUTING.md — Gitea-canonical SCM + branch+PR+merge-commit + no-force-push' (#2) from docs/contributing-md-2026-05-06 into main 2026-05-07 11:21:47 +00:00
a7a11ed6c8 Merge branch 'main' into docs/contributing-md-2026-05-06 2026-05-07 11:21:41 +00:00
1cb18db901 Merge pull request 'docs(security): org-wide SECURITY.md — responsible disclosure to security@moleculesai.app, 48h ack, 90d coordinated' (#3) from docs/security-md-2026-05-06 into main 2026-05-07 11:20:44 +00:00
fbfe7069f5 Merge pull request 'docs(profile): add org-profile README + branding assets, document layout convention' (#1) from docs/profile-readme-and-assets-2026-05-06 into main 2026-05-07 09:24:06 +00:00
documentation-specialist
4b532ac0a6 docs(contributing): add org-wide CONTRIBUTING.md — Gitea-canonical SCM, branch+PR+merge-commit, no force-push to main
First content for `Molecule-AI/.github/CONTRIBUTING.md`. GitHub
renders `<org>/.github/CONTRIBUTING.md` as the default contributor
guide for any repo in the org that doesn't ship its own.

## What's in scope

- **Where the code lives**: Gitea is canonical (post-2026-05-06 GitHub
  org suspension); GitHub mirror is read-only OSS face. Non-security
  issues at git.moleculesai.app/molecule-ai/internal.
- **How we ship**: branch off main (or staging on platform repos),
  conventional branch names, imperative commit messages, merge by
  merge commit (NOT squash), no force-push to main/staging.
- **Tests + CI + review**: run locally first; fix root cause not
  --no-verify; one-business-day review SLA on non-trivial PRs.
- **What we do NOT require**: no CLA, no bug bounty, no GPG
  enforcement, no mandatory issue templates. Explicit so
  contributors don't waste time on absent features.
- **Boundaries**: no committed secrets, no shared-env cleanup, no
  long-running background jobs in tests.
- **Repo-specific overrides win** when they disagree.

## Length

56 lines (orchestrator target was ~80; landed leaner because the
post-suspension reality + merge-commit shape are the load-bearing
bits and the rest is conventional-wisdom that doesn't need depth).

## Out of scope (parked, file when needed)

- Per-repo CONTRIBUTING overrides — tracked individually.
- Issue + PR templates — would live in profile/.github/ or per-repo;
  current per-repo guidance is fine.
- GPG / CLA / bounty — explicitly called out as NOT required so
  contributors don't infer absence as oversight.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-06 18:38:51 -07:00
f0c13be92a docs(profile): add org-profile README + branding assets, document layout convention
GitHub renders `<org>/.github/profile/README.md` as the org's public
landing page. Mirroring the same path here on Gitea so once GitHub
access is restored and repo-sync pushes this content over, it lands
in the right place automatically — no path translation step.

## Adds

- `profile/README.md` — comprehensive org-level intro (different from
  molecule-core's product-deep README): pitch in 1 paragraph, "what we
  ship" in 4 bullets, "where to start" routing table, repos-in-this-org
  index split by purpose (product / adapters / marketing), license +
  community footer.
- `profile/assets/molecule-icon.svg` — same SVG that landed on
  molecule-core's README in PR #5; light/dark adaptive via
  prefers-color-scheme styles.
- `profile/assets/molecule-logo.svg` — wordmark variant.

## Updates

- `README.md` (repo root, not user-visible on the org page) — documents
  the layout convention + lists the other cross-org defaults GitHub
  picks up from `<org>/.github/` (CONTRIBUTING.md, SECURITY.md,
  SUPPORT.md, issue/PR templates, workflow templates) so a future
  contributor knows where to add things.

## Why this content shape

GitHub org-profile READMEs are user-visible on the org's public page.
Standard wisdom for that surface:

- short — 1-2 screens, not the deep product pitch (which lives at
  molecule-core)
- routes the reader to the right repo for what they actually want
  (product / SaaS / Claude integration / docs / new runtime)
- lists the major repos with one-line descriptions so a visitor can
  navigate without 30 tabs
- names the license model (BSL 1.1 → Apache 2.0 on 2029-01-01)

The "Where to start" table is the load-bearing piece — the rest is
context. If a visitor only reads the table, they still know where to
go.

## Out of scope (parked)

- CONTRIBUTING.md, SECURITY.md, SUPPORT.md — would normally live here
  too. Skipping for now; current per-repo guidance is fine. File when
  the org has enough cross-cutting policy to warrant it.
- GitHub Actions workflow templates — not relevant while we're on
  Gitea + operator-host deploys.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-06 17:10:56 -07:00
5 changed files with 197 additions and 2 deletions

56
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,56 @@
# Contributing to Molecule-AI
Thanks for your interest. This file is the org-wide default; individual repos may override with their own `CONTRIBUTING.md`.
## Where the code lives
- **Canonical SCM: Gitea at [`https://git.moleculesai.app/molecule-ai`](https://git.moleculesai.app/molecule-ai).** All commits, PRs, and issues happen here.
- **GitHub mirror at [`https://github.com/Molecule-AI`](https://github.com/Molecule-AI) is read-only** for the open-source surface. As of 2026-05-06 it does not accept new PRs or issues from external contributors. We're happy to receive patches via Gitea instead.
- **Non-security issues**: file at [`git.moleculesai.app/molecule-ai/internal/issues`](https://git.moleculesai.app/molecule-ai/internal/issues), or on the specific repo if it's repo-scoped.
- **Security issues**: see [`SECURITY.md`](./SECURITY.md). Do not file public issues for vulnerabilities.
If you need a Gitea account to open a PR, ping us at the contact in `SECURITY.md` and we'll create one.
## How we ship changes
Every change goes through a PR — no direct pushes to `main` on any repo, and no direct pushes to `staging` on platform repos either.
1. **Branch off the right base.** Most repos: `main`. Platform repos (`molecule-core`, `molecule-controlplane`): `staging`. The destination repo's README will say.
2. **Use a descriptive branch name.** Conventional shape: `<type>/<short-summary>`. Types we use: `feat`, `fix`, `chore`, `docs`, `test`, `refactor`, `perf`. Example: `fix/poll-loop-jitter`.
3. **Commit messages**: imperative mood, present tense. Subject ≤ 72 chars. Body explains the why, not the what (the diff already shows the what). Group commits logically — one concern per commit, no `WIP` or `fix typo` noise in the final history. Squash or rebase locally before pushing if needed.
4. **Open a PR**. Title matches the lead commit. Description covers: what changed, why, alternatives rejected, rollout/rollback notes. For non-trivial changes, list the three weakest spots in the diff as a hostile self-review — saves the reviewer the work.
5. **Merge by merge commit, never squash.** This preserves the per-commit narrative for `git blame` and bisect. Auto-merge is fine once approved + CI green.
6. **Never force-push** to `main` or `staging`. Force-pushes on your own feature branch are fine until review starts; after that, prefer additive follow-up commits so the reviewer doesn't lose their place.
## Tests, CI, and review
- **Run the test suite locally before pushing.** Each repo's `README.md` documents the command (typically `bun test`, `go test ./...`, or `npm test`). CI runs the same suite; if it fails, fix the root cause — don't `--no-verify` past hook failures.
- **Every test must be able to fail.** No tautologies, no asserting-the-mock, no tests that pass because the code under test was never invoked.
- **Review** lands within a business day for non-trivial PRs. We're a small team — feel free to ping in the PR if a review is sitting cold for >2 days.
## What we do NOT require
We're being explicit about absent features so contributors don't waste time on them:
- **No CLA.** You retain copyright; license is set per-repo (mostly BSL 1.1, see `LICENSE`).
- **No bug bounty program.** Security disclosures are still very welcome — see `SECURITY.md`.
- **No GPG-signed commit enforcement.** Sign if you want; not required.
- **No mandatory issue-template fields.** Fill what you can; we'll ask if anything's missing.
If we add any of these later, the change lands in this file via PR like everything else.
## Boundaries
- **Don't push secrets, tokens, or `.env` files.** Pre-commit secret-scanning runs in CI but is not infallible. If you do leak something, immediately ping us in the relevant PR or via the `SECURITY.md` contact and we'll rotate.
- **Don't run cluster-cleanup or mass-delete tests against shared environments** — staging is shared.
- **Don't spawn long-running background jobs in test files.** They hang CI.
## Repo-specific overrides
Some repos add stricter rules (e.g. `molecule-core` has a coverage floor by package; `molecule-controlplane` requires staging→main auto-promote PRs to be reviewed even though they're machine-authored). Those live in the repo's own `CONTRIBUTING.md` or `docs/engineering/`.
When the repo-specific guidance and this file disagree, the repo-specific guidance wins.
---
Last updated: 2026-05-06.

View File

@ -1,3 +1,27 @@
# .github
# `Molecule-AI/.github`
Org profile (README rendered on org page) + shared workflow templates
Org-level community files + the org-profile README rendered on the org page.
## Layout
```
.github/
├── README.md # this file (repo entry point, not user-visible on the org page)
└── profile/
├── README.md # rendered on github.com/Molecule-AI when GitHub access is restored
└── assets/
├── molecule-icon.svg
└── molecule-logo.svg
```
## Convention
GitHub renders `<org>/.github/profile/README.md` as the org's public landing page. We mirror the same path on Gitea so once GitHub access is restored and repo-sync starts pushing, the file lands in the right place automatically.
## Adding more cross-org defaults
GitHub also picks up `<org>/.github/CONTRIBUTING.md`, `SECURITY.md`, `SUPPORT.md`, issue / PR templates under `.github/`, and workflow templates under `.github/workflow-templates/`. Add as needed — keep them generic; per-repo overrides win.
## Editing
PR against `main`; org-profile content is user-visible, so pair-review even trivial edits.

70
profile/README.md Normal file
View File

@ -0,0 +1,70 @@
<div align="center">
<p>
<img src="./assets/molecule-icon.svg" alt="Molecule AI" width="160" />
</p>
<h1>Molecule AI</h1>
<h3>The Org-Native Control Plane for Heterogeneous AI Agent Teams</h3>
<p>
Molecule AI is the operating system for AI agent organizations. One control plane, eight runtimes, organization-aware memory, real ops surfaces — built for teams that want to move past the demo.
</p>
<p>
<a href="https://moleculesai.app"><strong>moleculesai.app</strong></a> ·
<a href="https://git.moleculesai.app/molecule-ai/molecule-core"><strong>molecule-core</strong></a> ·
<a href="https://git.moleculesai.app/molecule-ai/molecule-mcp-claude-channel"><strong>Claude Code plugin</strong></a> ·
<a href="https://git.moleculesai.app/molecule-ai/molecule-core/blob/main/docs/index.md"><strong>Docs</strong></a>
</p>
</div>
---
## What we ship
- **Org-native workspace abstraction** — every node is a role with persistent identity, memory boundary, hierarchy position, and A2A interface. Workspaces grow into teams without breaking external integrations.
- **Eight production agent runtimes** behind one workspace contract — Claude Code, Hermes 4, Gemini CLI, LangGraph, DeepAgents, CrewAI, AutoGen, OpenClaw. Mix them across teams without giving up shared governance.
- **Memory v2** with pgvector semantic recall, scoped to organizational boundaries (`LOCAL` / `TEAM` / `GLOBAL`). Memories promote into hot-loadable skills as workflows mature.
- **A real operational plane** — Canvas v4 (warm-paper themed), live activity streams, restart/pause/resume, terminal + files into running workspaces, Langfuse traces, the whole picture.
## Where to start
| If you want to … | Go to |
|---|---|
| Read the pitch + run it locally | [`molecule-core`](https://git.moleculesai.app/molecule-ai/molecule-core) — Apache 2.0-converting BSL 1.1, Quick Start in 5 commands |
| Try the hosted SaaS | [moleculesai.app](https://moleculesai.app) — multi-tenant, EC2 + Cloudflare Tunnels, WorkOS auth, Stripe billing |
| Bridge a Claude Code session into a Molecule workspace | [`molecule-mcp-claude-channel`](https://git.moleculesai.app/molecule-ai/molecule-mcp-claude-channel) — `/plugin marketplace add Molecule-AI/molecule-mcp-claude-channel` |
| Browse the architecture | [docs/architecture/architecture.md](https://git.moleculesai.app/molecule-ai/molecule-core/blob/main/docs/architecture/architecture.md) |
| See the memory model | [docs/architecture/memory.md](https://git.moleculesai.app/molecule-ai/molecule-core/blob/main/docs/architecture/memory.md) |
| Add a new runtime / template | [`molecule-ai-workspace-runtime`](https://git.moleculesai.app/molecule-ai/molecule-ai-workspace-runtime) (mirror of `workspace/`) + the `molecule-ai-workspace-template-*` repos |
## Repos in this org
### Product
- **[`molecule-core`](https://git.moleculesai.app/molecule-ai/molecule-core)** — the platform. Go control plane + Next.js Canvas + Python workspace runtime. Open source under BSL 1.1 (converts to Apache 2.0 on 2029-01-01).
- **`molecule-controlplane`** — SaaS multi-tenant orchestration on top of `molecule-core`. Private; backs [moleculesai.app](https://moleculesai.app).
### Adapters & integrations
- **[`molecule-mcp-claude-channel`](https://git.moleculesai.app/molecule-ai/molecule-mcp-claude-channel)** — Claude Code MCP plugin: bridges Molecule A2A traffic into a local Claude Code session.
- **[`molecule-ai-workspace-runtime`](https://git.moleculesai.app/molecule-ai/molecule-ai-workspace-runtime)** — Python adapter runtime, mirrored from `molecule-core/workspace/`. Published as a PyPI wheel.
- **`molecule-ai-workspace-template-*`** — one repo per supported runtime template (claude-code, hermes, langgraph, …).
### Marketing & community
- **[`landingpage`](https://git.moleculesai.app/molecule-ai/landingpage)** — [moleculesai.app](https://moleculesai.app) source.
- **[`molecule-ai-status`](https://git.moleculesai.app/molecule-ai/molecule-ai-status)** — public status page.
## License & community
Most user-facing code is open source under the Business Source License 1.1 (converts to Apache 2.0 on 2029-01-01). Personal, internal, and non-commercial use is permitted without restriction; commercial use that competes with the hosted product is what the BSL gates.
Issues, PRs, and design discussions land on the individual repos above. The platform repo's [Docs Home](https://git.moleculesai.app/molecule-ai/molecule-core/blob/main/docs/index.md) is the canonical entry point for engineering depth.
---
<sub>Org profile last refreshed 2026-05-06.</sub>

View File

@ -0,0 +1,28 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<style>
.bg { fill: #0a1120; }
.accent { fill: #7fe8d6; }
.accent-stroke { stroke: #7fe8d6; }
@media (prefers-color-scheme: light) {
.bg { fill: #f5f7fa; }
.accent { fill: #1a8a72; }
.accent-stroke { stroke: #1a8a72; }
}
</style>
<rect class="bg" width="64" height="64" rx="14"/>
<g class="accent-stroke" stroke-width="2.4" stroke-linecap="round" fill="none">
<line x1="32" y1="32" x2="12" y2="14"/>
<line x1="32" y1="32" x2="52" y2="18"/>
<line x1="32" y1="32" x2="10" y2="40"/>
<line x1="32" y1="32" x2="54" y2="44"/>
<line x1="32" y1="32" x2="32" y2="56"/>
</g>
<g class="accent">
<circle cx="32" cy="32" r="6.5"/>
<circle cx="12" cy="14" r="3.5"/>
<circle cx="52" cy="18" r="3.5"/>
<circle cx="10" cy="40" r="3.5"/>
<circle cx="54" cy="44" r="3.5"/>
<circle cx="32" cy="56" r="3.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 957 B

View File

@ -0,0 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="Molecule AI">
<g stroke="#7fe8d6" stroke-width="2.6" stroke-linecap="round" fill="none">
<line x1="32" y1="32" x2="12" y2="14"/>
<line x1="32" y1="32" x2="52" y2="18"/>
<line x1="32" y1="32" x2="10" y2="40"/>
<line x1="32" y1="32" x2="54" y2="44"/>
<line x1="32" y1="32" x2="32" y2="56"/>
</g>
<g fill="#7fe8d6">
<circle cx="32" cy="32" r="7"/>
<circle cx="12" cy="14" r="3.6"/>
<circle cx="52" cy="18" r="3.6"/>
<circle cx="10" cy="40" r="3.6"/>
<circle cx="54" cy="44" r="3.6"/>
<circle cx="32" cy="56" r="3.6"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 662 B