Quickstart: Your AI Developer Workspace

Configure 160+ MCP tools, link GitHub, onboard AI agents with full project context, and ship your first sprint — the full setup in 6 steps, in under 20 minutes.

1

Enable the Forge Module

Navigate to Admin → Modules and enable aeion-forge. The MCP handler registers automatically — your AI agents (Claude, GPT, custom) can immediately call all 160+ Forge actions over MCP without any wiring.

Module dependencies installed automatically:

  • Forge collections — projects, issues, sprints, knowledge entries, ADRs, file registry, agent sessions, time logs, focus workspaces
  • MCP handler — exposes mcp__aeionos__forge to any agent connected via MCP
  • Event bus — issue and sprint lifecycle events (forge.issue.created, forge.sprint.completed, etc.) publish to the platform event bus, so Blueprint or your own module can subscribe and trigger downstream automation
  • Nightly memory consolidation — one scheduled job re-embeds changed knowledge, runs freshness checks, mines promotions, and cleans up stale sessions automatically; daily standup digests (generate_pulse) are generated on demand by agents, not on a fixed schedule

Confirm the install worked by opening Admin → Forge → Dashboard — you should see an empty project list (until Step 2) with no errors, and the MCP handler is live as soon as the module shows as enabled.

2

Create Your First Project

FieldWhat it controlsDefault
`key`Short uppercase code (2–10 chars) that prefixes every issue IDAuto-generated from the name if omitted
`lead`Project manager / lead for the projectEmpty
`status``active`, `hold`, or `archived``active`
`githubRepo`Repo slug (`org/repo`) used for PR-to-issue linkingEmpty
3

Generate Knowledge Embeddings for Semantic Search

Forge exposes generate_embeddings and semantic_search_knowledge MCP actions so AI agents can retrieve knowledge by meaning rather than keyword. The embedding model is selected through the platform AI gateway — whichever provider you've configured for embeddings under Admin → AI → Providers (Aeion's standard provider registry) becomes the default for Forge as well.

```typescript // Backfill embeddings for an existing project (run once after migration) await aeion.forge({ action: "generate_embeddings", projectId: "PLAT", });

// Re-embed only documents that changed since the last pass (lighter; safe to schedule daily) await aeion.forge({ action: "reingest_changed", projectId: "PLAT", });

// Search knowledge by meaning const hits = await aeion.forge({ action: "semantic_search_knowledge", projectId: "PLAT", query: "how do we handle token rotation", limit: 10, }); ```

Keyword fallback — when an embedding provider isn't configured (or for projects that haven't been embedded yet), search_knowledge falls back to an ILIKE-based text search across title + content. Agents that need broad coverage call both: keyword-first for exact matches, semantic-second for adjacent concepts.

Freshness hygienecheck_knowledge_freshness runs three detectors: code drift (entries snapshot a structural fingerprint of the files they describe — rewritten code flags the entry no matter how recently it was edited), unverified age (90 days), and never-accessed (60+ days with zero retrievals). verify_knowledge resets the clocks; suggest_promotions mines recent resolutions for patterns that should graduate to permanent entries. A nightly consolidate_memory pass runs all of it automatically and renders a Memory Health summary in every session briefing.

Write-time dedupcreate_knowledge and capture_learning refuse near-duplicates with the matching entries and a reconciliation hint (force: true overrides), so the knowledge base stays clean at the source instead of getting audited months later.

Step 3½: Index Your Codebase for Code Intelligence

One glob call gives agents a queryable map of your code — symbols, call graph, and (once embedded) natural-language code search.

```typescript // Index a module — ignore rules + content-hash dedup make re-runs free await aeion.forge({ action: "index_codebase", projectId: "PLAT", glob: "src/**", });

// After every commit: keep the index tracking HEAD (you run git, Forge indexes) await aeion.forge({ action: "reindex_changed_code", projectId: "PLAT", paths: gitDiffNameOnly, // output of git diff --name-only HEAD~1 });

// Build the call graph from extracted callee names (dryRun previews counts) await aeion.forge({ action: "resolve_symbol_edges", projectId: "PLAT" });

// Now agents can ask real questions: await aeion.forge({ action: "search_symbols", projectId: "PLAT", query: "rate limit", }); await aeion.forge({ action: "get_symbol_usage", projectId: "PLAT", symbolName: "AuthService", }); // + transitive callers await aeion.forge({ action: "get_symbol_source", projectId: "PLAT", symbolId: "<from search>", }); await aeion.forge({ action: "simulate_blast_radius", projectId: "PLAT", symbolName: "AuthService", }); ```

Trust by design — name collisions are everywhere in real codebases (setup, handler), so edge resolution prefers same-file definitions, accepts project-unique ones, and skips ambiguous names while _reporting the count_. The graph re-resolves automatically per file after every reindex.

4

Onboard Your First AI Agent

The killer feature: agents start with full project context via get_session_handoff. Zero ramp-up time.

```typescript // Agent invokes at the start of every session const handoff = await aeion.forge({ action: "get_session_handoff", projectId: "PLAT", });

// handoff includes: // - Last session's nextAction (where to pick up) // - Active sprint progress (X / Y issues done) // - In-progress issues + blockers // - Recent decisions // - Key knowledge entries // - Dead ends from previous agents (avoid re-trying) // - Files the next agent should read first ```

Agent best practices:

  1. Start every session with get_session_handoff — read it before doing anything else.
  2. Sync memory with sync_agent_memory so other agents can see what you're working on (avoids parallel duplicate work).
  3. Use file locks (claim_file_lock / release_file_lock) when editing shared files.
  4. Dedupe before creating — call get_similar_issues before create_issue to avoid spam.
  5. Capture learnings — call capture_learning when you discover something non-obvious. It becomes part of the searchable knowledge base.
  6. End every session with complete_session — record what shipped, what's next, what failed.
5

Run Your First Sprint

Sprints are time-boxed iteration windows. Aeion Forge's sprint engine tracks velocity, burndown, and auto-rolls incomplete work.

```typescript // Create a sprint const sprint = await aeion.forge({ action: "create_sprint", projectId: "PLAT", sprintName: "Sprint 12 — Q3 Velocity", sprintGoal: "Ship the multi-tenant audit-log signing rollout", sprintDuration: 14, // Days });

// Move issues into the sprint await aeion.forge({ action: "move_to_sprint", issueIds: ["PLAT-101", "PLAT-102", "PLAT-103"], sprintId: sprint.id, });

// Start the sprint await aeion.forge({ action: "start_sprint", sprintId: sprint.id, }); ```

During the sprint:

  • generate_pulse produces a daily standup digest (what shipped yesterday, what's planned today, who's blocked)
  • get_blocked_issues surfaces work stuck waiting on dependencies
  • calculate_critical_path finds the longest dependency chain that could slip the sprint
  • add_comment + link_pr track PR-to-issue lifecycle

At sprint end:

  • complete_sprint archives the sprint with a retrospective
  • generate_release_notes produces customer-facing changelog markdown from shipped issues
  • export_sprint_report emits a full markdown report for stakeholders

Incomplete issues automatically move to the next sprint or back to the backlog (configurable).

6

Wire GitHub PR Tracking

Link PRs to issues so merge state auto-updates issue status, and so review status surfaces in your project boards.

```typescript // Attach a PR to an issue await aeion.forge({ action: "link_pr", issueId: "PLAT-101", prUrl: "https://github.com/acme/platform/pull/4287", prTitle: "feat: multi-tenant audit-log signing", });

// When the PR merges, auto-close the issue await aeion.forge({ action: "update_pr_status", prUrl: "https://github.com/acme/platform/pull/4287", prStatus: "merged", autoClose: true, // Closes the issue on merge }); ```

GitHub webhook configuration:

  1. In your GitHub repo, go to Settings → Webhooks → Add webhook
  2. Set the payload URL to your Aeion instance's /api/v1/forge/webhooks/github endpoint, content type application/json, and the secret your platform administrator configured
  3. Subscribe to the Pull request event — that's what drives the auto-transitions and comment-linking described above today

PR comments by AI agents flow through the attach_commit action with the issue ID, so the full review thread is searchable later.

Integration Recipes

PR merge → issue close → release notes. Set autoClose: true on update_pr_status so merged PRs auto-close their linked issue. Then generate_release_notes at sprint end picks up all merged-and-closed issues into your changelog automatically.

Bug report → dedup → triage. Inbound bug reports from Sentry / Datadog / custom error pipeline call create_bug_from_error with the error trace. The action runs a similarity check against existing bugs; if it's a known issue, it adds a comment + increments occurrence count instead of creating a duplicate.

Decision logging → ADR enforcement. When the team makes an architectural decision, log_decision captures it as an ADR. Later, agents can call validate_adr_compliance against a proposed diff to flag changes that contradict an accepted decision.

Knowledge → Claw skill. AeionClaw can search the Forge knowledge base directly via the forge MCP tool. When a customer asks "How does our auth work?", Claw surfaces the relevant ADR + linked knowledge entry instead of hallucinating.

Sprint metrics → BI dashboards. Forge's sprint + velocity data is queryable from Aeion BI. Build dashboards for engineering leadership without writing custom scripts.

Pick-next by leverage. get_unblocked_tasks scores every ready issue by topological impact — "closing this unblocks 4 issues (13 pts)" — and sorts leverage-first. The session briefing calls out the highest-leverage pick automatically, and suggest_sprint packs the next sprint against your real trailing velocity (it says no_completed_sprints rather than inventing a number).

Evidence that compounds. Pass filesModified (one git show --name-only away) on every attach_commit — each shipped ticket strengthens a commits→files→issues graph that powers route_incoming_bug ("this stack trace belongs to the team that touched these files") and surfaces prior work when anyone claims an issue touching the same code. reconcile_commits backfills the graph from git history.

Personalize your agents. set_agent_preferences persists per-agent settings every briefing honors: standing reminders, terse handoffs, pinned issues, watched files (code-structure drift alerts), preferred test commands per glob ("spatial game tests run under vitest, not bun test"), and a default project for multi-project tenants.

Cross-project insights. find_cross_project_insights surfaces patterns across projects ("authentication bugs cluster around the same week each sprint") so platform-wide problems get triaged at the org level, not buried in one team.

Troubleshooting

Agent says "session not found". get_session_handoff requires a valid projectId. If it's a new project with no prior session, the action returns the project briefing instead. Make sure your agent's first call after list_projects uses one of the returned project keys.

Semantic search returns no results. Check check_knowledge_health — if you migrated content recently, embeddings may not have generated yet. Run generate_embeddings to backfill. Also check provider status under Admin → Forge → Embeddings.

Duplicate issue ID collision. The self-healing counter (GREATEST(counter, MAX(identifier_number)) + 1) resolves this automatically at write time — no manual resync exists or is needed. If you see a collision in production, it's a sign your DB restore was incomplete; the next issue created in that project will self-correct.

File-lock orphans. If an agent crashes mid-edit, locks can remain. Run cleanup_stale_sessions (idempotent — only cleans sessions idle > 7 days by default). Adjust olderThanDays for more aggressive cleanup.

PR webhook events not firing. Check the delivery log (GitHub → repo → Settings → Webhooks → Recent Deliveries). Common causes: payload URL typo, webhook secret mismatch, or the Pull Request event not selected. Redeliver a recent event from GitHub to confirm signature verification passes.

Sprint velocity looks wrong. Velocity uses story points by default — if you're not assigning points consistently, switch to issue-count basis (Admin → Forge → Sprint Settings → Velocity Mode). For new teams, expect 2-3 sprints before velocity calibrates.

Frequently Asked Questions

Pass `githubRepo` when creating or updating a project (e.g., `"acme/platform"`). Add a webhook in your GitHub repo/org pointing at `/api/v1/forge/webhooks/github` with the shared secret your platform administrator configured (`FORGE_GITHUB_WEBHOOK_SECRET`) — no GitHub App required. Then `link_pr` attaches PRs to issues and `update_pr_status` tracks merge status. Set `autoClose: true` on the merged update to close the issue automatically.

Forge routes through the platform AI gateway — configure your preferred provider under **Admin → AI → Providers**. Any provider registered in the gateway that supports embedding can be used. If no provider is configured, Forge falls back to ILIKE-based keyword search automatically.

File locking (`claim_file_lock` / `release_file_lock`) prevents concurrent edits to the same file. Sessions use heartbeat timestamps; `cleanup_stale_sessions` marks abandoned sessions completed. The knowledge graph + session handoff give shared context so agents don't duplicate work.

Absolutely. Issue management, sprint tracking, knowledge base, and ADRs work for human teams. The MCP layer just adds AI superpowers when agents are present. Many teams adopt Forge as a Jira/Linear alternative first, then add AI agents later.

The `GREATEST(counter, MAX(identifier_number)) + 1` pattern ensures the counter never falls behind actual issue numbers — even if a disaster recovery restored issue rows without the counter. A unique-constraint violation triggers one retry with the corrected counter. Gap-free, collision-free.

Call `get_similar_issues` before `create_issue`. It searches title/description similarity (using your configured embeddings) and returns matching issue IDs. The `create_bug_from_error` action also runs a dedup check automatically against recent error reports.

Yes. Call `generate_release_notes` after `complete_sprint`. It groups completed issues by type (features, fixes, breaking changes, docs) and generates markdown formatted for your CHANGELOG. The `export_sprint_report` action generates a full sprint status report for stakeholders.

Knowledge entries are general project info (architecture notes, conventions, gotchas, references). ADRs are formal decision records with context + decision + alternatives considered. Both are searchable + linkable to issues. ADRs additionally support `accept_decision`, `supersede_decision`, and `validate_adr_compliance` for governance workflows.

Issue lifecycle events (created, updated, closed, etc.) emit to the platform event bus. Blueprint can subscribe and trigger downstream actions — "when a P0 bug is filed, notify the on-call channel + create a Sentry alert + open a war-room session". Reverse direction works too: Blueprint workflows can file Forge issues programmatically.

Yes — Aeion Singularity includes connectors for all three. Jira and Linear bring in projects and issues; GitHub adds pull requests, commits, and releases. Map the fields to your Forge project/issue collections, preview with a dry run, then execute. It's a one-time pull from the source system rather than a live two-way sync, so most teams run it once to backfill history and work in Forge from then on.

Ready to build with AI agents?