What stays familiar

Git hosting, pull requests (called merge requests in GitLab), issues, code review threads, and a web UI for browsing history. Push workflow over SSH and HTTPS is identical. Issues and boards are present in both.

What changes

No bundled CI/CD. src.land uses signed webhooks to external runners. You gain a queryable symbol graph rebuilt on every push, a real MCP server with scoped tokens per agent, and a per-action audit log that GitLab only exposes on Premium and above.

Feature comparison

Dimensionsrc.landGitLab
FootprintOne Go binary plus a Postgres database. Air-gap and FIPS build available.Multi-service cluster (Gitaly, Workhorse, Sidekiq, Redis, Elasticsearch, and more). High resource floor.
Code indexingKnowledge graph rebuilt on push. Symbols, callers, and cross-language edges queryable via MCP.Basic code search. Advanced Search (Elasticsearch) is an optional add-on. No native symbol graph.
AI / agent accessMCP protocol server with scoped bearer tokens. One audit row per agent call.GitLab Duo AI features. No standard MCP server. Agents authenticate as project tokens or service accounts.
Audit logAppend-only row per action, including agent reads. Queryable by actor, namespace, and action type.Audit events available on Premium and Ultimate. Covers admin and project events; not per-agent-read.
Permission modelNamespace tree (org, project, repo). Agent tokens scoped to repos and action types.Group/subgroup/project hierarchy with roles. Service accounts for automation. No first-class agent scope.
CI/CDNot included. Integrates via signed webhooks to external CI. citadel-cli for local runs.GitLab CI/CD built in. Shared and self-hosted runners. Full pipeline DSL.
Issues and projectsIssues at any namespace level. Boards, milestones, and project graph built in.GitLab Issues, Epics, Roadmaps, Boards. Rich planning surface on Premium and Ultimate.
WikiKG-backed wiki pages. API reference blocks stay current with the code graph.Markdown wiki per project. No automatic freshness or code-graph integration.
Self-hostingSingle binary. Helm chart for Kubernetes. No runtime cluster required.GitLab Omnibus or Helm chart. Omnibus bundles all services but still a heavy install.

Migration path

  1. 01

    Create a namespace

    Sign up and create a user or org namespace on src.land.

  2. 02

    Import repos from GitLab

    Paste your GitLab HTTPS remote URL into the import wizard. Full history and branches arrive.

  3. 03

    Indexing runs on arrival

    The knowledge graph builds from imported history. Symbol search and MCP queries work immediately.

  4. 04

    Update remote URLs

    Point remotes to src.land. The SSH and HTTPS push workflow is unchanged.

  5. 05

    Migrate CI to webhooks

    Replace GitLab CI stages with signed webhook calls to your external CI runner. The citadel-cli handles local builds.

  6. 06

    Mint scoped agent tokens

    Create bearer tokens for each agent or automation with only the permissions it needs.

No rebase or squash required. A continuous mirror keeps the GitLab remote in sync during the transition. Move CI last, after the code and issues are settled.

Try it yourself

One repo is enough to evaluate.

Import from any git remote. History and indexing arrive together.